組み合わせでfor文を回す

N個の数字からr個取り出した値の組み合わせで処理をするプログラムをfor文使って作ることが必要になって考えたのでメモ。高速に計算するなら別ので。

nC3の場合。(nはNに置き換えてね)

for i = 0; i < N-3; i++
 j = i + 1
 for k = j + 1; k < n-1; k++
  以下 i, j, kを用いた処理の記述

nC4の場合は

for i = 0; i < N-4; i++
 j = i + 1
 k = j + 1
 for l = k + 1; l < n-1; l++
  以下 i, j, k, lを用いた処理の記述

要は、

  1. 1番目のループの範囲は0からN-(nCrのr)
  2. 1番目とr番目のループの間はr-2個分の引数を、前の引数+1で用意。
  3. r番目のループの範囲は(r-1)番目の引数 + 1 から N-1まで。