n皇后问题.txt
来自「中过科学技术大学历年复试机试题」· 文本 代码 · 共 66 行
TXT
66 行
#include<stdio.h>
#include<stdlib.h>
#define N 8 //N皇后问题
int a[N+1][N+1];
int count=0;
void trial(int i){
int j,k,h;
int flag;
// int a[N+1][N+1];
//printf("\n* i=%d *\n",i);
//printf("**********************\n");
/*for(h=1;h<=N;h++){
for(j=1;j<=N;j++){
a[h][j]=p[h][j];
//printf("%d ",a[h][j]);
}
//printf("\n");
}
*/
//printf("**********************\n");
if(i>N){
count++;
printf("\n\ncount=%d",count);
printf("\n其中一个解为");
for(h=1;h<=N;h++){
printf("\n");
for(j=1;j<=N;j++){
printf("%d ",a[h][j]);
}
}
//return;
//system("pause");
}
else for(j=1;j<=N;j++){
flag=1;
//printf("\n*i=%d j=%d*\n",i,j);
for(k=1;k<=N;k++)a[i][k]=0;//第i行j列前所有的元素应为0
a[i][j]=1;
for(h=1;h<i;h++){
if(a[h][j]==a[i][j]){
a[i][j]=0;
flag=0;
break;
}
}
if(flag==1)trial(i+1);
}
}
main(){
int i,j;
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
a[i][j]=0;
}
}
trial(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?