源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

8皇后问题的解法实例代码

  • 时间:2022-06-04 13:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:8皇后问题的解法实例代码
[u]复制代码[/u] 代码如下:
#include <stdio.h> #define MAX 200 #define Empty 0 #define Full 1 #define N 8 unsigned char qipan[N][N][N]={MAX};//初始化8张棋盘表示每下一步的 void input(int i); int count = 0; int main() {     input(0);     getchar();     return 0; } void input(int i) {     int x=0,y=0;     int p=0,q=0;     int flag = 0;     //初始化当前棋盘     if(i!=0)     {         for(x=0;x<N;x++)         {             for(y=0;y<N;y++)             {                 qipan[i][x][y] = qipan[i-1][x][y];             }         }     }     else     {         for(x=0;x<N;x++)         {             for(y=0;y<N;y++)             {                 qipan[i][x][y] = MAX;             }         }     }     //递归结束     if(i==N)     {         count++;         for(x=0;x<N;x++)         {             for(y=0;y<N;y++)             {                 printf("%d ",qipan[i-1][x][y]);             }             printf("\n");         }         printf("%d\n",count);         return;     }     for(y=0;y<N;y++)     {         //找到空位         if(qipan[i][i][y]==MAX)         {             //另其为1             qipan[i][i][y] = 1;             //前后左右上下都置为0             for(p=0;p<N;p++)             {                 for(q=0;q<N;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<N;p++)             {                 for(q=0;q<N;q++)                 {                     if(i!=0)                     qipan[i][p][q] = qipan[i-1][p][q];                     else                     qipan[i][p][q] = MAX;                 }             }             flag =0;         }     }     //找不到空位结束     return; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部