博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八皇后问题的实现
阅读量:5340 次
发布时间:2019-06-15

本文共 1224 字,大约阅读时间需要 4 分钟。

八皇后问题的实现

  

 #include <stdio.h> 

#define N 8           // 定义棋盘的格数, 通过改变,也可以是4皇后, 16皇后, 9皇后什么的. 
int chess[N][N] = {0}; // 棋盘 

int count = 0; // 有多少种放法 

int canput(int row, int col) // 确定某一格能不能放 { 

int i,j; 
for(i = 0; i < N; i ++) { 
   if(chess[i][col] == 1) //有 同列的    { 
    return 0;    } 
   for(j = 0; j < N; j++)    { 
    if(chess[row][j]==1) //有同行的     { 
     return 0;     } 
    if(((i-row)==(j-col)||(i-row)==(col-j))&&chess[i][j]==1) // 对角线上有的   

  { 

     return 0;  

   }    

 }

return 1; } 
void print_chess() // 打印放置的方案 { 
int i, j; 
for(i = 0; i < N; i++) 

   for(j = 0; j < N; j++) 

   { 

    printf("%d ", chess[i][j]);  

    } 

    printf("\n");

printf("\n"); } 

int put(int row)     // 放置棋子, row是从哪一行开始, 通常是0 { 

int j, s; 
for(j = 0; j < N; j++) // 此一行的每一个格子都要试试能不能放

 { 

   if(canput(row, j)) // 假如这格能放的话   

   { 

    chess[row][j] = 1; // 放置 
    if(row == N-1) // 已经到了最后一行, 那么肯定成功

   { 

     count = count +1; 
     print_chess(); 
     chess[row][j] = 0; //成功后, 寻找下一种方法    

     continue;  

     }  

    s = put(row+1); // 放置下一行的  

    if(s == 0)    // 假如下一行不能放    

   { 

     chess[row][j] = 0; // 那么这格是放错了的, 清除      

     continue;           // 找本行的下一个方格     

    }     

    else 

    { 

     break;    

     }     

  } 

if(j==N)    // 如果这一行的每个空格都不能放置 

   return 0; // 那么本行放置失败

 }

 else

 { 

   return 1; // 本行放置成功 

 } 

int main()

  int s  ;
  s = put(0); // 放置 
  printf("the number of put way is %d\n", count); //打印信息 

  return 0; 

     

转载于:https://www.cnblogs.com/hxy8888/p/6090945.html

你可能感兴趣的文章
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>