凌晨用自己理解的回溯法写的一道关于四皇后的问题
程序运行正确,但没有输出结果,是不是数据溢出了的问题,望各位大神指点一下^_^
程序代码:#include<stdio.h>
int count=0;
int H[4][4];
int pai(int i,int j)
{
int s,t;
for(s=i,t=0;t<0;t++) //判断行
if(H[s][t]==1&&t!=j)
return 0;
for(s=0,t=j;j<0;j++) //判断列
if(H[s][t]==1&&s!=i)
return 0;
for(s=i-1,t=j-1;s>=0,t>=0;s--,t--) //判断左上方
if(H[s][t]==1)
return 0;
for(s=i-1,t=j+1;s>=0,j<4;s--,t++) //判断右上方
if(H[s][t]==1)
return 0;
for(s=i+1,t=j-1;s<4,t>=0;s++,t--) //判断左下方
if(H[s][t]==1)
return 0;
for(s=i+1,t=j+1;s<4,t<4;s++,t++) //判断右下方
if(H[s][t]==1)
return 0;
return 1;
}
void huang(int j)
{
if(j==4)
count++;
for(int i=0;i<4;i++){
if(pai(i,j)){
H[i][j]==1; //插入皇后
huang(j+1); //继续搜索下一个
H[i][j]==0;
}
}
}
int main()
{
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
H[i][j]=0;
huang(0); //还原
printf("Answer:",count);
getchar();
}










只有这个: