uva 12113 Overlapping Squares
来源:互联网 发布:java专业技能 编辑:程序博客网 时间:2024/06/11 08:49
题目:Overlapping Squares
思路:dfs打表。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<map>#include<algorithm>#include<sstream>#include<queue>#include<set>using namespace std;#define n 6#define w 5#define h 9struct Square {bool a[w+5][h+5];Square() {memset(a,0,sizeof(a));}bool operator <(const Square& other) const {for(int i=0; i<w; i++) {for(int j=0; j<h; j++) {if(a[i][j]<other.a[i][j]) return true;if(a[i][j]>other.a[i][j]) return false;}}return false;}};Square in;map<Square,int> mp;void Change(Square& x,int row,int col) {x.a[row][2*col+1]=1;x.a[row][2*col+3]=1;x.a[row+1][2*col+1]=0;x.a[row+1][2*col+3]=0;x.a[row+2][2*col+1]=1;x.a[row+2][2*col+3]=1;x.a[row+1][2*col]=1;x.a[row+1][2*col+2]=0;x.a[row+1][2*col+4]=1;x.a[row+2][2*col]=1;x.a[row+2][2*col+2]=0;x.a[row+2][2*col+4]=1;}void dfs(int step,Square x) {if(step==n) {return ;}for(int i=0; i<=2; i++) {for(int j=0; j<=2; j++) {Square y=x;Change(y,i,j);if(!mp.count(y)||mp[y]>step+1) mp[y]=step+1,dfs(step+1,y);}}}bool init() {memset(in.a,0,sizeof(in.a));string s;for(int i=0; i<w; i++) {getline(cin,s);if(s[0]=='0') {return false;}for(int j=0; j<h; j++) {if(s[j]=='_') {in.a[i][j]=true;}if(s[j]=='|') {in.a[i][j]=true;}}}}int main() {Square x;dfs(0,x);int T=0;while(init()) {T++;if(!mp.count(in)) printf("Case %d: No\n",T);else printf("Case %d: Yes\n",T);}return 0;}
阅读全文
2 0
- UVA 12113 - Overlapping Squares
- UVa 12113 - Overlapping Squares
- uva 12113 Overlapping Squares
- Overlapping Squares (UVA
- Overlapping Squares UVA
- UVA 4994 Overlapping Scenes
- UVa 460 - Overlapping Rectangles
- UVA 1453 Squares
- uva 256 - Quirksome Squares
- UVA 1453 - Squares
- UVa:11407 Squares
- UVa 256 - Quirksome Squares
- UVA-201Squares
- UVa 201 - Squares
- UVa 201 - Squares
- UVa 201 - Squares
- UVA-201 Squares
- UVA - 201 Squares
- web前段对数据库执行的insert插入操作
- LintCode刷题——不同的路径 II
- offer17--合并两个有序链表
- Java中哪些异常必须声明并捕获,否则产生编译错误
- 帝国CMS7.2版多终端访问功能使用图文教程
- uva 12113 Overlapping Squares
- 字符串逆序
- Linux常用操作指令
- 数据库事务四种隔离级别
- 米老师会议
- Codeforces Gym 100202C Holidays
- linux系统基本命令之man命令详解
- Leetcode-Sqrt(x)
- [C/C++] 类