首页 > 试题广场 >

(选排列)下面程序的功能是利用递归方法生成从1到n(n10

[填空题]
(选排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数中取k(1<=k<=n)个数的
全部可能的排列(不一定按升序输出)。例如,当n=3,k=2时,应该输出(每行输出5个排列):
12 13  21  23 32
31
程序:
#include <iostream.h>
 #include <iomanip.h>
 int n, k, a[10];
 long count = 0;
 void perm2(int j) {
     int i, p, t;
     if (   1   ) {
         for (i = k; i <= n; i++) {
             count++;
             t = a[k];
             a[k] = a[i];
             a[i] = t;
             for (   2   )
             cout << setw(1) << a[p];
             cout << "  ";
             t = a[k];
             a[k] = a[i];
             a[i] = t;
             if (count % 5 == 0) cout << endl;
         }
         return;
     }
     for (i = j; i <= n; i++) {
         t = a[j];
         a[j] = a[i];
         a[i] = t;
         3;
         t = a[j];   4;
     }
 }
 void main( ) {
     int i;
     cout << "nEntry n,k (k<=n)n" << endl;
     cin >> n >> k;
     for (i = 1; i <= n; i++) a[i] = i;
     5;
     cout << endl;
 } 

我真不会
发表于 2022-04-17 15:01:18 回复(0)