#include
#include
#define N 4
int count=0;
void display(int a[N][N])
{
int i, j;
for(i=0; i {
for(j=0; j printf("%c", a[i][j]?'*':'0');
printf("\n");
}
}
int isvalid(int j, int a[N][N])
{//判断j列是否有一个1
int i;
for(i=0; i if(a[i][j])
return 1;
return 0;
}
void trys(int i, int a[N][N])
{//回溯法
int j;
for(j=0; j {
if(isvalid(j,a)==0)
{
a[i][j] = 1;
if(i==N-1)
{
printf("%d\n", ++count);
display(a);
}
else
{
trys(i+1, a);
}
a[i][j] = 0;
}
}
}
int main()
{
int a[N][N] = {{0}};
trys(0, a);
return 0;
}
阅读(1271) | 评论(1) | 转发(0) |