1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using namespace std;
void ind(int n) { while (n--) { printf(" "); } }
void dfs(int d, int n, vector<char>& v) { ind(d); if (d == n) { printf("writeln("); for (int i = 0; i < v.size(); ++i) { if (i) { putchar(','); } putchar(v[i]); } puts(")"); return; } for (int i = int(v.size() - 1); i >= 0; --i) { printf("if %c < %c then\n", v[i], 'a' + d); if (i == int(v.size() - 1)) { v.push_back('a' + d); } else v.insert(v.begin() + i + 1, 'a' + d); dfs(d + 1, n, v); v.erase(v.begin() + i + 1); ind(d); if (i) { printf("else "); } } puts("else"); v.insert(v.begin(), 'a' + d); dfs(d + 1, n, v); v.erase(v.begin()); }
int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); puts("program sort(input,output);"); puts("var"); for (int i = 0; i < n; ++i) { if (i) { putchar(','); } putchar('a' + i); } puts(" : integer;"); puts("begin"); int cnt = 1; ind(cnt); printf("readln("); for (int i = 0; i < n; ++i) { if (i) { putchar(','); } putchar('a' + i); } puts(");"); vector<char> v; v.push_back('a'); dfs(1, n, v); puts("end."); if (t) { puts(""); } } return 0; }
|