HDU 1045 - Fire Net
2016-05-02 01:37
323 查看
水水的dfs
又写出无脑的判断了..
又写出无脑的判断了..
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char map[5][5]; int n,ans; int vis[5][5]; void dfs(int x,int cnt) { if(x==n){ if(ans<cnt) ans=cnt; return ; } for(int i=0;i<n;++i) { if(!vis[x][i]&&map[x][i]=='.') { int j; for(j=x;j>=0;--j){ if(map[j][i]=='X') break; ++vis[j][i]; } for(j=x+1;j<n;++j){ if(map[j][i]=='X') break; ++vis[j][i]; } for(j=i-1;j>=0;--j){ if(map[x][j]=='X') break; ++vis[x][j]; } for(j=i+1;j<n;++j){ if(map[x][j]=='X') break; ++vis[x][j]; } dfs(x,cnt+1); for(j=x;j>=0;--j){ if(map[j][i]=='X') break; --vis[j][i]; } for(j=x+1;j<n;++j){ if(map[j][i]=='X') break; --vis[j][i]; } for(j=i-1;j>=0;--j){ if(map[x][j]=='X') break; --vis[x][j]; } for(j=i+1;j<n;++j){ if(map[x][j]=='X') break; --vis[x][j]; } } } dfs(x+1,cnt); } int main() { while(~scanf("%d",&n)&&n) { for(int i=0;i<n;i++) scanf("%s",map[i]); memset(vis,0,sizeof(vis)); ans=0; dfs(0,0); printf("%d\n",ans); } }
相关文章推荐
- 20145104张家明 《Java程序设计》第9周学习总结
- 常用Javascript框架总结
- bfs 2016.5.2
- Tarjan算法-强连通分量-题集
- 《JAVA程序设计》第九周学习总结
- Nginx学习以及PHP+Nginx的环境安装与配置
- 第四次实验报告
- redis键过期
- pgsql自动安装shell脚本整理
- 要素缩放闪烁功能
- leetcode-53. Maximum Subarray
- 用Intel Parallel Studio XE 编译boost
- deepdetect 用c++11写的机器学习caffe和XGBoost API 接口
- 深入分析ConcurrentHashMap
- searchBar代理方法介绍
- 泛型--协变与逆变(转)
- 一些令你瞠目结舌的爬虫技巧
- 安卓中的质量监控CrashHandler implements UncaughtExceptionHandler
- windows下subversion(SVN)部署
- 基于iCamera测试高清摄像头SIV100B(替代ov7670)小结