C语言 8皇后解法

来源:互联网 发布:重庆计划软件 编辑:程序博客网 时间:2024/05/19 18:47
//这个问题的原理是,在一个四成四的表格中,顺序去放皇后,一个一个格子去试,每种情况都走一遍,结果就出来了

#include #define MAX 200#define Empty 0#define Full 1#define N 8unsigned char qipan[N][N][N]={MAX};//初始化8张棋盘表示每下一步的void input(int i);int count = 0;int main(){   input(0);   getchar();    return0;}void input(int i){    intx=0,y=0;    intp=0,q=0;    int flag =0;   //初始化当前棋盘   if(i!=0)    {       for(x=0;x       {           for(y=0;y           {               qipan[i][x][y] = qipan[i-1][x][y];           }       }    }    else    {       for(x=0;x       {           for(y=0;y           {               qipan[i][x][y] = MAX;           }       }    }    //递归结束   if(i==N)    {       count++;       for(x=0;x       {           for(y=0;y           {               printf("%d ",qipan[i-1][x][y]);           }           printf("\n");       }       printf("%d\n",count);       return;    }   for(y=0;y    {       //找到空位       if(qipan[i][i][y]==MAX)       {           //另其为1           qipan[i][i][y] = 1;           //前后左右上下都置为0           for(p=0;p           {               for(q=0;q               {                   if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))                       if(qipan[i][p][q] == MAX)                           qipan[i][p][q] = 0;               }           }           if(flag != -1)           {               //找下一个               input(i+1);           }           //将棋盘变回本层原样           for(p=0;p           {               for(q=0;q               {                   if(i!=0)                   qipan[i][p][q] = qipan[i-1][p][q];                   else                   qipan[i][p][q] = MAX;               }           }           flag =0;       }    }   //找不到空位结束   return;}


原创粉丝点击