链接:http://soj.me/1198 水题,全排就行了,只是wa到我死了个去... #include<iostream> #include<vector> #include<string> using namespace std; int b,a; string s; vector<string> eight,ans,tmp1,tmp2; string merge(vector<string> in) { string tmp; for(int i=0;i<in.size();++i) tmp+=in[i]; return tmp; } void arrange(vector<string> now,vector<string> left) { if(now.size()==b) ans.push_back(merge(now)); else { int size=left.size(); for(int i=0;i<size;++i) { tmp1=now; tmp2=left; tmp1.push_back(tmp2[i]); tmp2.erase(tmp2.begin()+i); arrange(tmp1,tmp2); } } } int main() { cin>>a; while(a--) { eight.clear(); ans.clear(); cin>>b; for(int i=0;i<b;++i) { cin>>s; eight.push_back(s); } vector<string> ini; arrange(ini,eight); string min="zzzzzzzz"; for(int i=0;i<ans.size();++i) { if(ans[i]<min) min=ans[i]; } cout<<min<<endl; } return 0; }