二维数组实现八皇后问题
2016-04-30 15:14
176 查看
之前关八皇后的问题全部使用的是一维数组进行实现(http://www.cnblogs.com/SeaSky0606/p/4604955.html),现改一种数据存储方式,按照8x8的二维棋盘存储皇后。基本逻辑不变,可参见如下代码:
#include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #define N 8 int q ,cnt=0; void dfs(int x); void placeon(int x,int y); void takeout(int x,int y); int canplace(int x,int y); void ps(); int main(){ dfs(0); printf("There are %d schema(s) in total!",cnt); return 0; } void dfs(int x){ if(x==N){ cnt++; ps(); }else{ for(int i=0;i<N;i++) if(canplace(x,i)){ placeon(x,i); dfs(x+1); takeout(x,i); } } } void placeon(int x,int y){ q[x][y]=1; } void takeout(int x,int y){ q[x][y]=0; } //key int canplace(int x,int y){ for(int i=1;i<=x;i++){ if((y+i<N &&(q[x-i][y+i]==1)) ||(y-i>=0 && (q[x-i][y-i]==1)) || q[x-i][y]==1){ return 0; } } return 1; } void ps(){ for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ if(q[i][j]==1)printf("A"); else printf("."); } printf("\n"); } printf("\n"); }
相关文章推荐
- Unity工程调试Bug解决整理
- 约翰斯·霍普金斯大学召开脑科学大会
- 前端工程化 - npm
- HTML5——行走日记
- SVN版本管理,提交代码规范。
- startActivityForResult实例
- ui方案设计
- Yalantis/Context-Menu.Android(未完成)
- 设计模式
- 书单计划
- 最长括号匹配问题
- 区域赛之位运算
- 详解RocketMQ中的consumer
- maven插件
- 详解RocketMQ中的Producer
- allegro Disable custom colors is enabled
- 背包系列第六篇----完全背包(求解最大价值的个数)
- RocketMq相关介绍
- ARP协议
- 复制指定目录下的指定文件,并修改后缀名