UVA639八皇后变形式之中国象棋盘上放車
来源:互联网 发布:php中介者模式 编辑:程序博客网 时间:2024/05/17 21:39
这题数据最大只有4X4,很显然暴力回溯搜索就行了,刚开始自己想的是写一个递归,递归下标搜索,然后用一个临时的二维数组调用,
但是失败了,函数貌似不能调用二维数组。但实际上应该直接递归结果即放置的車的个数,每当搜到一个可以放置車的位置,标记,
往深层递归就行了,然后注意没有返回值但是有循环的递归,递归结束了相当于这个递归完成了,可以返回了,不要条件判断什么时候返回,
所以这里注意返回到上一层后注意把标记还原。
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<algorithm>#include<map>#include<set>#include<vector>#include<stack>#include<queue>#include<climits>#define LL long longusing namespace std;const int N=201320;const LL mod=530600414;int a[6][6];int n;int dx[]={-1,1,0,0},dy[]={0,0,-1,1};int d[6][6];int ans;bool is_ok(int x,int y){ for(int i=0;i<4;i++) { int tx=x+dx[i],ty=y+dy[i]; while(a[tx][ty]==0) {tx=tx+dx[i];ty=ty+dy[i];} if(a[tx][ty]==1) return 0; } return 1;}void dfs(int p){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(!a[i][j]&&is_ok(i,j)) { a[i][j]=1; dfs(p+1); a[i][j]=0; } } ans=max(ans,p);}int main(){ while(cin>>n&&n) { getchar(); memset(a,-1,sizeof(a)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { char ch; cin>>ch; if(ch=='.') a[i][j]=0; } ans=0; dfs(0); cout<<ans<<endl; } return 0;}
0 0
- UVA639八皇后变形式之中国象棋盘上放車
- 中国象棋盘(未完)
- css练习006--中国象棋盘
- css练习008--中国象棋盘&&棋子
- POJ 1321 棋盘搜索 八皇后
- 暴力枚举之八皇后问题(可行解个数,打印可行解纵坐标,棋盘有洞,n皇后)
- 递归之八皇后
- DFS之八皇后
- 回溯之八皇后
- JAVA系列之画国际象棋盘
- UVA639
- uva639
- UVA639
- POJ 1321 棋盘问题类似八皇后 dfs搜索
- 算法解析之八皇后
- 数据结构之八皇后问题
- 算法之八皇后问题
- Python之八皇后问题
- kafka命令记录
- 友盟数据统计、消息推送、社会化分享
- POJ 2187:Beauty Contest 求给定一些点集里最远的两个点距离
- hyperic hq安装
- GCD的使用方法
- UVA639八皇后变形式之中国象棋盘上放車
- mysql添加远程访问
- HttpHandler与HttpModule的用处与区别
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android事件的传递机制
- jz2440下的input输入子系统
- 消费者和生产者
- OpenCV库的使用
- 布隆过滤器