PKU 3600 Subimage Recognition
http://poj.org/problem?id=3600
Bというイメージからいくつかの行と列を削って、Aと同じイメージにできるかを答えろというような問題。
列の選択を全探索して、行を貪欲に当てはめて行きました。
string a[20],b[20]; int ar,ac,br,bc; int el[20]; int es; void dfs(int t){ if(es==ac){ int as=0; rep(i,br){ bool ok=true; rep(j,es){ if(a[as][j]!=b[i][el[j]]){ ok=false; break; } } if(ok)++as; if(as==ar){ cout<<"Yes"<<endl; exit(0); } } return; } if(t==bc)return; dfs(t+1); el[es++]=t; dfs(t+1); es--; } main(){ cin>>ar>>ac; rep(i,ar)cin>>a[i]; cin>>br>>bc; rep(i,br)cin>>b[i]; dfs(0); cout<<"No"<<endl; }