程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-八皇後問下 ,算法題目

c-八皇後問下 ,算法題目

編輯:編程綜合問答
八皇後問下 ,算法題目

幫忙看下這個八皇後的錯哪裡了
#include
int nodanger(int row,int n,int (*a)[8])
{
int i;
int k,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;
//列

5個flag判斷5個方向有沒有危險
for( i=0; i {
if (*(*(a+i)+n)!=0)
{
flag1=1;
break;
}
}
//左上
for(i=row,k=n;i>0&&k>0;--i,--k)
if (*((*a+i)+k)!=0)
{
flag2=1;
break;
}
//右上
for(i=row,k=n;i0;++i,--k)
if(*(*(a+i)+k)!=0)
{
flag3=1;
break;
}
//左下
for(i=row,k=n;i>0&&k<8;--i,++k)
{
if(*(*(a+i)+k)!=0)
{
flag4=1;
break;
}
}
//右下
for(i=row,k=n;i<8&&k<8;++i,++k)
{
if(*(*(a+i)+k)!=0)
{
flag5=1;
break;
}
} if(flag1==1||flag2==1||flag3==1||flag4==1||flag5==1)
{
return 1;
}
else
{
return 0;
}
}
void eightqueen(int row,int n,int (*a)[8 ] )
{
int b[8][8];
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
b[i][j]=a[i][j];
if(8==row)
{
for (i=0;i<8;i++)
for (j=0;j<8;j++)
{
printf ("%d",b[i][j]);
}
printf("\n");
}
else //還沒找完,繼續找
{
for(j=0;j<8;j++)
if(nodanger (row,j,a))//ror行j列有沒有問題
{
for(i=0;i<8;i++)
{
* (*((b+row)+i))=0;
}
((b+row)+j)=1;
eightqueen(row+1,j,a);//繼續下一行
}
}
}
int main()
{
int i,j;
int a[8][8];
for(i=0;i<8;i++)
for(j=0;j<8;j++)
a[i][j]=0;
eightqueen(0,8,a);
return 0;
}

最佳回答:


http://wenku.baidu.com/link?url=Nw4pYpRqMupd9Bn3OfkFBoYM6Hhw9TqWvffZHX-GDQYPCTtqo1vABPHZPKyXl-YcG2LOybz798I4i4kP7IUuRyKGL_X2vIDgAH1ftQU6Ygu

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved