ホームに戻る
組み合わせ

// k(k = 10) 個のものを n(n = 4) 組に振り分け
int n;
int k;

void f(int b, int index, int d[50]){
  if(index == k){
    for(int i = 0; i < n; i++){
      cout << d[i] << " ";
    }
    cout << endl;
    // 7 1 1 1 
    // 6 2 1 1 
    // 6 1 2 1 
    // 以下続く
    return;
  }

  for(int i = b; i < n; i++){
    d[i]++;
    f(i, index + 1, d);
    d[i]--;
  }
}


n = 4;
k = 10;

int d[50];

for(int i = 0; i < 50; i++)d[i] = 1;

f(0, n, d);

inserted by FC2 system