UVA 639 - Don't Get Rooked 暴力回溯
来源:互联网 发布:海信32寸智能网络电视 编辑:程序博客网 时间:2024/05/22 02:02
枚举每个可以放的位置 是放还是不放 然后判断合法的方法能放多少个 比较保存最大的一个 0.029s
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ #ifdef LOCAL freopen("in.txt","r",stdin); #endif // LOCAL int T; while(scanf("%d",&T)&&T) { char G[T+2][T+2]; int vis[T+2][T+2]; memset(G,0,sizeof(G)); memset(vis,0,sizeof(vis)); for(int i = 1; i <= T; i++)///存图 { getchar(); for(int j = 1; j <= T; j++) scanf("%c",&G[i][j]); } int N = 1; for(int i = 0; i < T*T; i++)///枚举的最大次数 N *= 2; int MAX = 0; for(int i = 0 ;i < N; i++) { int t = i,f[T+2][T+2],sum = 0;///sum 计算放的个数 for(int x = 1; x <= T; x++) for(int y = 1; y <= T; y++) { if(t%2 == 1)sum++; f[x][y] = t%2; if(G[x][y] == 'X')///表示石墙 { if(f[x][y] == 1)sum--; f[x][y] = -1; } t /= 2; } if(sum <= MAX)continue; int ok = 1; for(int x = 1; x <= T && ok; x++)///判断冲突的好像可以有更简洁的 { for(int y = 1; y <= T && ok; y++) { if(f[x][y] != 1)continue; for(int r = x+1; r <= T && ok; r++)///判断行是否冲突 { int flag = 0; for(int l = x+1;l <= r; l++)///x 到r之间是否有墙隔着 if(f[l][y] == -1)flag = 1; if(f[x][y] == f[r][y] && f[x][y] == 1 && !flag) ok = 0; } for(int c = y+1; c <= T && ok; c++)///判断列是否冲突 { int flag = 0; for(int l = y+1; l <= c; l++) if(f[x][l] == -1)flag = 1; if(f[x][y] == f[x][c] && f[x][y] == 1 && !flag) ok = 0; } } } if(ok == 1) MAX = sum; } printf("%d\n",MAX); } return 0;}
回溯 DFS判断每个位置 每个位置有3两种方法 放或者不放 不合法的情况就退回上一层 否者继续递归下去 直到判断每一个是放还是不放
0 0
- UVA 639 - Don't Get Rooked 暴力回溯
- uva 639 Don't Get Rooked (暴力回溯 )
- UVA - 639 - Don't Get Rooked (暴力回溯)
- [回溯]Don't Get Rooked UVA 639
- uva 639 Don't Get Rooked ( 回溯 )
- uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯
- Don't Get Rooked uva 回溯
- uva 639 Don't Get Rooked(回溯)
- UVA - 639 Don't Get Rooked (回溯)
- UVa 639 Don't Get Rooked
- uva 639 - Don't Get Rooked
- uva 639 - Don't Get Rooked
- uva 639 - Don't Get Rooked
- UVa 639 - Don't Get Rooked
- UVA 639 - Don't Get Rooked
- UVA 639 - Don't Get Rooked
- UVa 639 - Don't Get Rooked
- uva 639 Don't Get Rooked
- -----------串口的结构体---termios 的属性介绍
- 让VC编译的程序链接到系统的 msvcrt.dll 的方法
- 抢食!传google将依托自有光纤推无线网络效劳
- HDU 1711 Number Sequence(KMP:找模板第一次出现的位置)
- android 修改桌面图标大小
- UVA 639 - Don't Get Rooked 暴力回溯
- 设计模式之观察者模式
- 应用程序中的服务器错误
- Java中的注解是如何工作的?
- 女人必知 教你认清6种隐性坏男人
- TimerTask is scheduled already 异常
- ubuntu 下同步google chrome 书签
- Chrome自动更新问题的解决办法
- 自动化部署脚本