PKU 1629 Fillword
http://poj.org/problem?id=1629
n*mのマス目にアルファベットが書かれている。これにP個の単語を見つけ出すとき、残っている文字を出力しろというような問題。
使われる文字は1度しか使われず、P個の単語は全て使われるので、出現する文字列を全て数えて、単語のぶんだけ引けばいい。
最初探索で通ってしまうのかと思いましたが、この方法にすぐ気づけて良かったです。
main(){ map<char,int>app; int h,w,t; cin>>h>>w>>t; string in; rep(i,h){ cin>>in; rep(j,w)app[in[j]]++; } rep(i,t){ cin>>in; rep(j,SZ(in))app[in[j]]--; } FOR(iter,app){ rep(i,iter->S)cout<<iter->F; } cout<<endl; }