uva639 回溯
来源:互联网 发布:知止可以不殆什么意思 编辑:程序博客网 时间:2024/06/08 02:53
//// main.cpp// 639//// Created by Fangpin on 15/3/9.// Copyright (c) 2015年 FangPin. All rights reserved.//#include <iostream>#include <cstring>#include <cstdio>#include <string>using namespace std;int map[7][7];int ans,n;void dfs(int x,int y,int sum){ if(!map[x][y]){ ++y; if(y==n+1) {y=1;++x;} if(x<=n) dfs(x,y,sum); } else{ int c1=0,c2=0,i=x,j=y; while(map[i][j]){ if(map[i][j]==2) ++c1; ++i; } i=x;j=y; while(map[i][j]){ if(map[i][j]==2) ++c1; --i; } i=x;j=y; while(map[i][j]){ if(map[i][j]==2) ++c2; ++j; } i=x;j=y; while(map[i][j]){ if(map[i][j]==2) ++c2; --j; } if(c1 || c2){ ++y; if(y==n+1) {y=1;++x;} if(x<=n) dfs(x,y,sum); } else{ ++sum; ans=max(ans,sum); int i=x,j=y; ++y; if(y==n+1) {y=1;++x;} if(x<=n){ map[i][j]=2; dfs(x,y,sum); --sum; map[i][j]=1; dfs(x,y,sum); } } }}int main(int argc, const char * argv[]) { // insert code here... while(scanf("%d",&n),n){ memset(map,0,sizeof(map)); string s; for(int i=1;i<=n;++i){ cin>>s; for(int j=0;j<s.size();++j){ if(s[j]=='.') map[i][j+1]=1; else map[i][j+1]=0; } } ans=0; dfs(1,1,0); printf("%d\n",ans); } return 0;}
0 0
- uva639 回溯!
- uva639 回溯
- UVA639 递归+回溯
- uva639(放车问题)-回溯法
- UVA639
- uva639
- UVA639
- uva639 - Don't Get Rooked
- UVA639 Don't Get Rooked
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 回溯
- 知行格言
- C++学习之map类型
- Neither user 10029 nor current process has android.permission.WRITE_MEDIA_STORAGE.
- 利用twisted实现的简易web client
- 【推荐】HibernateUtil 最优写法
- uva639 回溯
- 制作iOS Ad-Hoc测试应用流程
- 移动开发框架,第【二】弹:Hammer.js 移动设备触摸手势js库
- ORACLE的char、nchar、varchar、varchar2、nvarchar2的区别
- 老外谈设计:2015国外Web设计新思路分享
- UML 序列图(时序图)
- Android Annotations 配置
- XHR XMLHttpRequest() progress
- IOS单例模式及单例模式的优缺点