LRJ生成可重複的排列

#include <iostream>
using namespace std;


void print_emu(int a[], int x[], int n, int cur) {
  if (cur == 3) {
    for (int i = 0; i < 3; i++)
      cout << x[i] << " ";
    cout << endl;
    return;
  } else for (int i = 0; i < n; i++) {
    if (!i || a[i] != a[i-1]) {
      int c1 = 0;
      int c2 = 0;
      for (int j = 0; j < cur; j++)
        if (a[i] == x[j]) ++c1;
      for (int j = 0; j < n; j++)
        if (a[i] == a[j] ) ++c2;

      if (c1 < c2) {
        x[cur] = a[i];
        print_emu(a, x, n, cur+1);
      }
    }
  }
}

int main() {
  int x[5];
  int a[5] = {1, 1, 3, 4, 5};
  print_emu(a, x, 5, 0);
  return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章