Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119854
  • 博文数量: 41
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-21 22:50
文章分类

全部博文(41)

文章存档

2010年(1)

2007年(23)

2006年(17)

我的朋友

分类: C/C++

2007-01-18 12:11:25

#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;
}
阅读(1248) | 评论(1) | 转发(0) |
0

上一篇:全排列

下一篇:图的创建

给主人留下些什么吧!~~