LRJ生成可重复的排列

来源:互联网 发布:阿里云盒子怎么刷机 编辑:程序博客网 时间:2024/05/22 10:48
#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;}