STL中的next_permutation()下一个排列的简单应用 /* coder: ACboy date: 2010-3-19 result: AC description: UVa 146 ID Codes */ #include<iostream> #include<algorithm> using namespace std; int main() { char code[60],temp[60]; int n; #ifndef ONLINE_JUDGE freopen("146.txt", "r", stdin); #endif while(cin >> code) { if(code[0] == '#')break; n = strlen(code); strcpy(temp,code); sort(temp, temp+n); //最大排列的下一排列为最小排列,故sort排出最小排列 next_permutation(code,code + n); if(strcmp(code, temp) != 0)//比较当前排列的下一排列与最小排列,若相同则当前排列是最大排列 cout << code <<endl; else cout << "No Successor/n"; } return 0; }