標籤:style 暴力 bsp return print turn include for mes
https://vjudge.net/problem/UVA-12113
4*4 棋盤上,用6張2*2的紙 能否擺出給定形狀
暴力枚舉 每張紙 放在哪兒
#include<cstdio>#include<cstring>using namespace std;char End[5][10],start[5][9];bool ok;bool vis[9];void judge(char p[5][9]){ for(int i=0;i<5;i++) for(int j=0;j<9;j++) if(End[i][j]!=p[i][j]) return; ok=true;}void dfs(int x,char p[5][9]){ if(ok) return; judge(p); if(x==7) return; char tmp[5][9]; int id=0; for(int i=0;i<3;i++) for(int j=1;j<=5;j+=2,id++) { if(vis[id]) continue; vis[id]=true; memcpy(tmp,p,sizeof(tmp)); tmp[i][j]=tmp[i][j+2]=tmp[i+2][j]=tmp[i+2][j+2]=‘_‘; tmp[i+1][j-1]=tmp[i+2][j-1]=tmp[i+1][j+3]=tmp[i+2][j+3]=‘|‘; tmp[i+1][j]=tmp[i+1][j+1]=tmp[i+1][j+2]=tmp[i+2][j+1]=‘ ‘; dfs(x+1,tmp); if(ok) return; vis[id]=false; }}int main(){ int T=0; while(1) { gets(End[0]); if(End[0][0]==‘0‘) return 0; for(int i=1;i<5;i++) gets(End[i]); ok=false; memset(start,‘ ‘,sizeof(start)); memset(vis,false,sizeof(vis)); dfs(1,start); printf("Case %d: ",++T); puts(ok ? "Yes" : "No"); }}
UVA 12113 Overlapping Squares