新的开始
凤凰博报 由你开始

2007-06-13 15:21:59

浏览 529 次 | 评论 2 条

代码如下

验证正确 92总排列方式

#include"stdio.h"
#include"stdlib.h"
#define N 8  //N代表为8皇后
int H[N];//记录皇后的位置

void huanghou();
int OK(int i, int j);//判断是否冲突

int main(void)
{
 huanghou();
 
 system("pause");
    return 0;
}

void huanghou()
{
 int i = 1, sum = 0, j;
 
    H[i] = 0;
 while(i > 0)
 {

  H[i]++;
  while(H[i] <= N && !OK(i,H[i]))
  {
   H[i]++;
  }
    // printf("%d, %d\n",i, H[i]);
    // system("pause");
  if(H[i] <= N)
  {
 
   if( i == N)
   {
    sum++;
          printf("第%d解\n",sum);
    printf("皇后的排列顺序为");
    for(j = 1; j <= N; j++)
    {
     
     printf("%4d",H[j]);
    }
          printf("\n");
   }
         else
   {
    i++;
       H[i] = 0;
   }
  }
     else
  {
   i--;
  }
 } 
}

int OK(int i, int j)//看第i行的j列是否可以插入
{
   int k;
  
   for (k = 1; k < i; k++)
   {
    if((H[k] == j) || (k - H[k] == i - j) || ( k + H[k] == i + j))
    { 
     return 0;
    }
   }
   return 1;
}

比较迭代算法也回朔算法的区别

思考中

想好在签上来

上一篇 << 多机调度问题      下一篇 >> SQL思考题
  • justforfun [2007-06-13 03:25:02 PM]



    算法-----想说爱你不容易,嘻嘻 不过我会努力的

  • 凤凰网友 [2007-07-10 10:40:31 AM]



    :handshake

您还没有登录,请登录以后再发表评论。

关于博主

justforfun

海明威说-- “这个世界是美好的,值得我们为之奋斗” 我相信后半句...

博文相关