|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
兄弟们,大佬们,八皇后我代码只有51种方法,找不到错在哪,跪求大佬们帮帮我!!!!
#include <stdio.h>
void function(int one[8][8],int);
int function2(int one[8][8],int i,int j);
int jishu=0;
void function(int one[8][8],int a)
{
if(a==8)
{
jishu++;
printf("%d\n",jishu);
int c,d;
for(c=0;c<8;c++)
{
for(d=0;d<8;d++)
{
printf("%d ",one[c][d]);
}
putchar('\n');
}
putchar('\n');
return;
}
int j;
for(j=0;j<8;j++)
{
if((function2(one,a,j))==1)
{
one[a][j]=1;
function(one,a+1);
one[a][j]=0;
}
}
}
int function2(int one[8][8],int i,int j)//判断该位置是否符合条件
{
int i1=i-1,j1=j-1;
for(;i1>=0,j1>=0;i1--,j1--)//左上
{
if (one[i1][j1]==1)
{
return 0;
}
}
for(i1=i-1,j1=j+1;i1>=0,j1<=7;i1--,j1++)//右上
{
if (one[i1][j1]==1)
{
return 0;
}
}
for(i1=i-1;i1>=0;i1--)//列
{
if (one[i1][j]==1)
{
return 0;
}
}
return 1;
}
int main()
{
int one[8][8];
int c,d;
for(c=0;c<8;c++)
{
for(d=0;d<8;d++)
{
one[c][d]=0;
}
}
function(one,0);
return 0;
}
- for(i1=i-1,j1=j+1;i1>=0,j1<=7;i1--,j1++)
复制代码
多个逗号分开的话 只取最后一个表达式的值来判断
你这只相当于只有一个条件 : j1<=7
|
|