Hatena::Grouptopcoder

cafelier@SRM

cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み

スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、

 | 

2009-03-25

SRM437 250

| 02:39 | はてなブックマーク -  SRM437 250 - cafelier@SRM

全通り試すだけー。(3/25 13:13 もうちょい素直にした)

template<typename D, typename S>
  D lexical_cast(const S& s) { D d; stringstream ss; ss<<s; ss>>d; return d; }

class TheSwap {
public:
    int findMax(int n, int k) 
    {
        set<string> canMake;
        canMake.insert( lexical_cast<string>(n) );

        while( k --> 0 )
        {
            set<string> prev;
            prev.swap(canMake);

            for(set<string>::iterator it=prev.begin(); it!=prev.end(); ++it)
            {
                string s = *it;
                for(int i=0; i<s.size(); ++i)
                for(int j=i+1; j<s.size(); ++j)
                    if( !(i==0 && s[j]=='0') )
                    {
                        swap(s[i], s[j]);
                        canMake.insert(s);
                        swap(s[i], s[j]);
                    }
            }
        }

        return canMake.empty() ? -1 : lexical_cast<int>(*canMake.rbegin());
    }
};
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/cafelier/20090325
 | 

presented by cafelier/k.inaba under CC0