紫书搜索 习题7-6 UVA
来源:互联网 发布:辐射4低配优化mod 编辑:程序博客网 时间:2024/04/26 12:57
题目链接:
https://vjudge.net/problem/UVA-12113
题意:
能不能用不超过6张2x2的方纸在4x4的方格中摆出给定的图形?
题解:
最多放9个正方形,暴力枚举每个正方形放这9个中的哪个位置
坐标要想一想, 因为是覆盖,所以空格也要赋值
代码:
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 1e5+10;char mp[5][9],p1[5][9];int vis[9];bool ok(){ for(int i=0; i<5; i++) for(int j=0; j<9; j++) if(mp[i][j] != p1[i][j]) return false; return true;}bool dfs(int step){ if(ok()) return true; char p2[5][9]; for(int i=0; i<5; i++) for(int j=0; j<9; j++) p2[i][j] = p1[i][j]; if(step >= 6) return false; int i; for(i=0; i<9; i++){ if(vis[i]) continue; vis[i] = 1; int r=i/3, c=2*(i%3)+1; p1[r][c] = p1[r][c+2] = p1[r+2][c] = p1[r+2][c+2] = '_'; p1[r+1][c-1] = p1[r+2][c-1] = p1[r+1][c+3] = p1[r+2][c+3] = '|'; p1[r+1][c] = p1[r+1][c+1] = p1[r+1][c+2] = p1[r+2][c+1] = ' '; if(dfs(step+1)) return true; vis[i] = 0; for(int i=0; i<5; i++) for(int j=0; j<9; j++) p1[i][j] = p2[i][j]; } return false;}int main(){ int cas=0; while(1){ for(int i=0; i<5; i++){ gets(mp[i]); if(mp[i][0] == '0') return 0; } for(int i=0; i<5; i++) for(int j=0; j<9; j++) p1[i][j] = ' '; MS(vis); if(dfs(0)) printf("Case %d: Yes\n",++cas); else printf("Case %d: No\n",++cas); } return 0;}// _ _ _ _ #// |_|_|_|_|#// |_|_|_|_|#// |_|_|_|_|#// |_|_|_|_|#// _ _ #// _| |_ #// | |_ _| |#// |_| |_|#// |_ _|_|#// #// _ _ _ #// | |_ _| #// |_| | #// |_ _| #
0 0
- 紫书搜索 习题7-6 UVA
- 紫书搜索 习题7-7 UVA
- 紫书搜索 习题7-1 UVA
- 紫书搜索 习题7-2 UVA
- 紫书搜索 习题7-3 UVA
- 紫书搜索 习题7-4 UVA
- 紫书搜索 习题7-8 UVA
- 紫书搜索 习题7-10 UVA
- 紫书搜索 例题7-6 UVA
- UVA 10723 LCS变形 dp 紫书习题9-6
- 紫书习题 7-1 UVa 208 (爆搜加剪枝)
- 紫书搜索 例题7-4 UVA
- 紫书搜索 例题7-5 UVA
- 紫书搜索 例题7-9 UVA
- 紫书搜索 例题7-12 UVA
- 紫书搜索 例题7-13 UVA
- 紫书搜索 例题7-10 UVA
- 习题7-10 UVA 11214 Guarding the Chessboard (迭代加深搜索)
- 解决MFC中两个类互相包含头文件所导致的错误
- 漫吧漫画阅读界面的搭建(一)基础布局搭建(上)
- 算法-寻找缺少的数字--9-2
- Java生涯——Java基础---多态、内部类、异常、包
- 1065. 单身狗(25)
- 紫书搜索 习题7-6 UVA
- Javascript 中的神器——Promise
- 1049. 数列的片段和(20)
- python学习笔记4:多进程和多线程的使用方法和区别
- linux命令之crontab定时执行任务
- Java生涯——Java基础---多线程
- 1048. 数字加密(20)
- 卡牌游戏之客户端数据存储
- 支付宝内推面经