经典指数          
原因
2150
浏览数
0
收藏数
 

下列代码试图打印数字1-9的全排列组合。
#include "stdio.h"
#define N 9
int x[N];
int count = 0;

void dump() {
  int i = 0;
  for (i = 0; i < N; i++) {
    printf("%d", x[i]);
  }
  printf("\n");
}

void swap(int a, int b) {
  int t = x[a];
  x[a] = x[b];
  x[b] = t;
}

void run(int n) {
  int i;
  if (N - 1 == n) {
    dump();
    count ++;
    return;
  }
  for (i = ___; i < N; i++) {
    swap(___, i);
    run(n + 1);
    swap(___, i);
  }
}

int main() {
  int i;
  for (i = 0; i < N; i++) {
    x[i] = i + 1;
  }
  run(0);
  printf("* Total: %d\n", count);
}
其中run函数中缺失的部分应该依次为:
  • n+1, n, n+1
  • n+1, n, n
  • n, n, n
  • n, n+1, n+1
  • n+1, n+1, n+1
  • n, n, n+1

     举报   纠错  
 
切换
1 个答案

先看代码

 for(i = ___; i < N; i++) {

    swap(___, i);

    run(n + 1);

    swap(___, i);

  }

为了防止内存溢出,我直接排除法选择了c。只是个做题技巧,程序没多看

 
切换
撰写答案