完善程序2
(排列数)输输入两个正整数 , 在 中任取 个数,按字 典序从小到大输出所有这样的排列。
例如: 输入: 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; }
(1) 处应填( )
false
true
1
-1
.(2) 处应填( )
used[i] = true
data[i] =i
used[data[i]] = true
used[data[i]] = false
(3) 处应填( )
j
i
true
false
.(4) 处应填( )
n
m
i
j
.(5) 处应填( )
return 0
exit
continue
break
发表评论