トップ 一覧 Farm 検索 ヘルプ RSS ログイン

2006db1.cppの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
 #include <iostream>
 #include <string>
 using namespace std;
 
 // 組み合わせを覚えておく配列
 string kumi[10000];
 int ct;
 
 void add(string s)
 {
 	int i;
 	for(i=0; i<ct; i++){
 		if(kumi[i]==s) break;
 	}
 	if(i==ct){
 		kumi[ct++]=s;
 	}
 }
 
 string reverse(string s)
 {
 	string t=s;
 	for(int i=0; i<s.length(); i++){
 		t[i]=s[s.length()-i-1];
 	}
 	return t;
 } 
 
 int main()
 {
 	int m;
 	
 	cin >> m;
 	for(int i=0; i<m; i++){
 		for(int k=0; k<10000; k++){
 			kumi[i]="";
 		}
 		ct=0;
 		string train;
 		cin >> train;
 //		cout << train << endl;
 		for(int j=1; j<train.length(); j++){
 			// 前の正順、前の逆順、後ろの正順、後ろの逆順
 			string f1, f2, b1, b2;
 			f1=train.substr(0, j);
 			b1=train.substr(j);
 			f2=reverse(f1);
 			b2=reverse(b1);
 			add(f1+b1);
 			add(f1+b2);
 			add(f2+b1);
 			add(f2+b2);
  			add(b1+f1);
 			add(b1+f2);
 			add(b2+f1);
 			add(b2+f2);
 		}
 //		for(int i=0; i<ct; i++){
 //			cout << kumi[i] << " ";
 //		}
 		cout << ct << endl;
 	}
 	
 	return 0;
 }