输入:3 2
输出:1 2
1 3
2 1
2 3
3 1
3 2
#include <iostream> #include <cstring> using namespace std; const int SIZE = 25; bool used[SIZE]; int data[SIZE]; int n, m, i, j, k; bool flag; int main( ) { cin >> n >> m; memset(used, false, sizeof(used)); for (i = 1; i <= m; i++) { data[i] = i; used[i] = true; } flag = true; while (flag) { for (i = 1; i <= m - 1; i++) cout << data[i] << " "; cout << data[m] << endl; flag = 1; for (i = m; i >= 1; i--) { 2; for (j = data[i] + 1; j <= n; j++) if (!used[j]) { used[j] = true; data[i] = 3; flag = true; break; } if (flag) { for (k = i + 1; k <= m; k++) for (j = 1; j <= 4; j++) if (!used[j]) { data[k] = j; used[j] = true; break; } 5; } } } return 0; }