UVa-10098-Generating Fast
AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 3. Brute Force :: Elementary Skills
// 10098 - Generating Fast #include <iostream> #include <algorithm> #include <cstring> using namespace std; int main(void) { int i, n, len; char s[11]; while(cin >> n) while(n--) { cin >> s; len = strlen(s); sort(s, s+len); do{ for(i=0; i<len; i++) cout << s[i]; cout << endl; }while(next_permutation(s, s+len)); cout << endl; } return 0; }
Time limit exceeded:
// 10098 - Generating Fast #include <iostream> #include <algorithm> #include <cstring> using namespace std; void print_permutation(int cur, int n, char* s, char p, char q) { int i, j; char ch; if(cur == n) { for(i=0; i<n; i++) cout << s[i]; cout << endl; } else { for(ch=p; ch<=q; ch++) { int ok = 1; for(j=0; j<cur; j++) if(s[j] == ch) ok = 0; if(ok) { s[cur] = ch; print_permutation(cur+1, n, s, p, q); } } } } int main(void) { int n, len; char s[11]; while(cin >> n) while(n--) { cin >> s; len = strlen(s); sort(s, s+len); print_permutation(0, len, s, s[0], s[len-1]); cout << endl; } return 0; }