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;
}