hdu 1045
来源:互联网 发布:js 对象转换为url参数 编辑:程序博客网 时间:2024/06/04 17:49
题目大意:
要求:碉堡不能在同一行、同一列。如果(X表示墙)X在这一行里 ,碉堡可以打不穿墙,也就是有墙可以放多个碉堡。
求一个n*n区域里最大可以放多少个碉堡。
基本上就是八皇后问题的改编,只不过如果遇到X就可以在次匹配而已。
这道题我还是用回溯法+剪枝。
#include<stdio.h>#include<string.h>char map[10][10];int visit[10][10];int n,ss,ans,t;int judge(int x,int y){int k;if(x<0||x>=n||y<0||y>=n)return 0;if(map[x][y]=='X'||visit[x][y]==1)return 0; for(k=x-1;k>=0;k--){if(map[k][y]=='X')break;if(visit[k][y]==1)return 0;}for(k=y-1;k>=0;k--){if(map[x][k]=='X')break;if(visit[x][k]==1)return 0;}return 1;}void dfs(int ss){int x,y;if(ss==n*n){ if(ans<t) ans=t; return;} x=ss/n;y=ss%n;if(judge(x,y)){t++;visit[x][y]=1;dfs(ss+1);t--; visit[x][y]=0;dfs(ss+1);}elsedfs(ss+1);}int main(){int i;while(scanf("%d",&n),n){t=0; for(i=0;i<n;i++) { scanf("%s",map[i]); } memset(visit,0,sizeof(visit)); ans=0; dfs(0); printf("%d\n",ans);}return 0;}
0 0
- hdu 1045
- hdu 1045
- hdu 1045
- hdu 1045
- hdu 1045
- HDU 1045
- hdu 1045
- HDU-1045
- HDU 1045
- hdu 1045 hdoj 1045
- hdu 1045 DFS+回溯
- hdu 1045 Fire Net
- HDU 1045 Fire Net
- HDU-1045 回溯算法
- HDU 1045 Fire Net
- HDU 1045 二分匹配
- Hdu 1045 Fire Net
- HDU 1045 Fire Net
- 扁平化设计五大原则
- 理解Paxos Made Practical
- first Designcon paper
- CAP
- 囚犯问题
- hdu 1045
- 自己归纳整理的ARM THUMB指令机器码表
- Ubuntu 下载链接
- Leftmost Digit(杭电1060)(求N^N的最高位)
- LeetCode 题解(62): Find Minimum in Rotated Sorted Array
- 教研室seminar中做关于贝叶斯的报告的ppt
- poj 1088 记忆化搜索
- 《百合花》 茹志鹃
- 把一个library项目导入到其他项目时,eclipse找不到library