zoj 1002回溯搜索
来源:互联网 发布:java 读取pdf文件 编辑:程序博客网 时间:2024/05/20 15:41
<a target=_blank href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1002</a>
</pre><pre name="code" class="cpp">
#include <stdio.h>#include <memory.h>typedef struct{int x;int y;}Move;Move move[4]={{-1,0},{1,0},{0,-1},{0,1}};char g[5][5];int max,n;int check(int x,int y){int i,j,k,a,b;for(i=0;i<4;i++){a=x+move[i].x;b=y+move[i].y;while(a>=0&&a<n&&b>=0&&b<n){if(g[a][b]=='X'){break;}if(g[a][b]=='@'){return 0; }a+=move[i].x;b+=move[i].y;}}return 1;}void fun(int k,int cur) //k为当前层数 cur为当前炮台放置个数 {int i,j,x,y;if(k==n*n) // 遍历完了 {if(cur>max){max=cur;return;}}else{x=k/n;y=k%n; //计算当前坐标 if(g[x][y]=='.'){if(check(x,y)) //如果可以放的话 (为了找出最大值考虑所有情况){//就两种 当前位置放或不放 g[x][y]='@';fun(k+1,cur+1);//放 g[x][y]='.'; // 放完后 考虑不放时 要恢复原样 }}fun(k+1,cur); //不放 和放不了 }}int main(){int i,j,k;while(scanf("%d",&n)&&n){max=-1;for(i=0;i<n;i++){scanf("%s",g[i]);}fun(0,0);printf("%d\n",max);}return 0;}
0 0
- zoj 1002回溯搜索
- ZOJ 1002 回溯
- zoj 1002 回溯
- Num 36 : ZOJ 2100 [ 深度优先搜索算法 ] [ 回溯 ]
- 图的搜索+回溯-Seeding(zoj 2100 )
- 搜索-回溯
- ZOJ 1002 Fire Net(搜索)
- zoj 1002 搜索(简单)
- ZOJ 1411 Anniversary (回溯)
- ACM-ZOJ 1145 回溯
- ZOJ-3861 DFS+回溯
- 暴力搜索------回溯法
- poj 1935(搜索+回溯)
- 搜索进阶 hdu2181 回溯
- 搜索与回溯 5.6
- 搜索与回溯 心得
- 搜索与回溯
- ZOJ 1084 Channel Allocation (回溯)
- arm自动重启的原因
- php中null,0,'',false的区别
- ♥HDOJ 1271-整数对【数学】
- hdu5093(二分图最大匹配)
- jquery控制css的display(控制元素的显示与隐藏)
- zoj 1002回溯搜索
- Android http get请求代码片段
- Eclipse连接SQL Server 2008
- linux maven的配置小结
- yii控制器传值到layout方法
- 用户级线程
- 如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验
- Python - decorator
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK