1142-Organize Your Train part II
考え方
全ての並べ方を列挙してみる。
実装(C++)
#include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <climits> #include <cctype> #include <ctime> #include <cassert> #include <cwchar> #include <cstdarg> #include <cwctype> #include <queue> #include <stack> #include <algorithm> #include <list> #include <vector> #include <set> #include <map> #include <iostream> #include <deque> #include <complex> #include <string> #include <functional> #include <iomanip> #include <sstream> #include <tr1/unordered_map> #include <boost/foreach.hpp> #define foreach BOOST_FOREACH using namespace std; using namespace tr1; using namespace boost; typedef long long int lli; typedef unsigned int uint; set<string> s; void solve(string a,int b){ string c=a.substr(0,b); string d=a.substr(b); s.insert(d+c); std::reverse(c.begin(),c.end()); s.insert(c+d);s.insert(d+c); std::reverse(d.begin(),d.end()); s.insert(c+d);s.insert(d+c); std::reverse(c.begin(),c.end()); s.insert(c+d);s.insert(d+c); } int main(){ string in; for(cin>>in;cin>>in;){ s.clear(); s.insert(in); int l=in.size(); for(int i=0;i<l;i++) solve(in,i); cout<<s.size()<<endl; } return 0; }