matsutips @Wiki

アルゴリズム

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

nCrの組み合わせを得る

参考ページ
ちなみにソースはDelphiです。読めねぇ。

よく考えると、rが決まっている時(例えばr=3)は、
size = n;
for(i=0; i < size; i++)
  for(j=1; j < size; j++)
   for(k=2; k < size; k++)
    if(i < j && j < k) cout << i,j,k << endl;
でいいんよね。rが大きくなると大変だけど。

一般的に得るのはちょっと大変で、真面目に考えてない。
文字数の問題は配列にしたら終わりでいいけど、ループが増えるのはちょっと面白くない。
なんかスマートなのはないもんかね。Delphi読むとか本買う以外で(w

nCrの組み合わせを得る2

再帰関数使ったら書ける。所要時間は知らん。まぁ、組み合わせなので元々爆発します。仕方ないです。そういう意味では全組み合わせをサーチする時点で無謀ともいえる。
C++コードです。
int full=n;
int choose=r;
void comb_search(int iter, int* cmb){
  if(iter < choose){
   for(int cmb[iter]=iter; cmb[iter] < full; cmb[iter]++){
    comb_search(iter+1, cmb);
   }
  }else{
   for(int i=0; i < choose; i++)
    cout << cmb[i] << " ";
   }
   cout << endl;
  }
}
int main(){
  int cmb[choose];
  comb_search(0, cmb);
}
みたいな感じ?
デバッグしてないのでよくわかんないです。
sizeを配列にして各要素の数を入れておくと固定サイズでなくてもできるはず。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー