PKU 3055 Digital Friends
http://poj.org/problem?id=3055
二つの文字列について、出現している桁が同じかどうかを判定しろというような問題。
ただの全探索。
bool fr(const string&a,const string&b){ set<char> sa,sb; FOR(it,a)sa.insert(*it); FOR(it,b)sb.insert(*it); return sa==sb; } string solve(){ string a,b; cin>>a>>b; if(fr(a,b))return "friends"; rep(i,2){ for(int i=0;i<SZ(a)-1;++i){ a[i]++; a[i+1]--; if(a[i]>='0'+(i==0) && a[i]<='9' && a[i+1]>='0' && a[i+1]<='9' && fr(a,b))return "almost friends"; a[i]-=2; a[i+1]+=2; if(a[i]>='0'+(i==0) && a[i]<='9' && a[i+1]>='0' && a[i+1]<='9' && fr(a,b))return "almost friends"; a[i]++; a[i+1]--; } swap(a,b); } return "nothing"; } main(){ int t; cin>>t; while(t--) cout<<solve()<<endl; }