小甲魚c言語版:八皇后問題解決構想
1327 ワード
#include
int count=0;
int notDanger(int row,int j,int (*chess)[8]){
int i,k,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0;
//
for(i=0;i<8;i++){
if(*(*(chess+i)+j)!=0 ){
flag1=1;
break;}
}
//
for(i=row,k=j;i>=0&&k>=0;i--,k--){
if(*(*(chess+i)+k)!=0 ){
flag2=1;
break;}
}
//
for(i=row,k=j;i<8&&k<8;i++,k++){
if(*(*(chess+i)+k)!=0 ){
flag3=1;
break;}
}
//
for(i=row,k=j;i<8&&k>=0;i++,k--){
if(*(*(chess+i)+k)!=0 ){
flag4=1;
break;}
}
//
for(i=row,k=j;i>=0&&k<8;i--,k++){
if(*(*(chess+i)+k)!=0 ){
flag5=1;
break;}
}
if(flag1||flag2||flag3||flag4||flag5){
return 0;
}else{
return 1;
}
}
// row
// n
// (*chess)[8]):
void eight_que(int row,int n,int (*chess)[8]){
int i,j,chess2[8][8];
for(i=0;i<8;i++){
for(j=0;j<8;j++){
chess2[i][j]=chess[i][j];}
}
if(row==8){
printf(" %d :
",count+1);
for(i=0;i<8;i++){
for(j=0;j<8;j++){
printf("%d ",*(*(chess2+i)+j));}
printf("
");
}
printf("
");
count++;
}
else{
//
for(j=0;j