アルゴリズム

このページを編集する    
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。


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を配列にして各要素の数を入れておくと固定サイズでなくてもできるはず。
|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|