凌晨用自己理解的回溯法写的一道关于四皇后的问题
程序运行正确,但没有输出结果,是不是数据溢出了的问题,望各位大神指点一下^_^程序代码:
#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(); }