「アルゴリズム」(2007/02/20 (火) 18:06:46) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
*nCrの組み合わせを得る
[[参考ページ>http://aoki2.si.gunma-u.ac.jp/lecture/mb-arc/arc012/288.html]]
ちなみにソースは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++コードです。
>(global variable)
>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を配列にして各要素の数を入れておくと固定サイズでなくてもできるはず。
#contents
*nCrの組み合わせを得る
[[参考ページ>http://aoki2.si.gunma-u.ac.jp/lecture/mb-arc/arc012/288.html]]
ちなみにソースは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を配列にして各要素の数を入れておくと固定サイズでなくてもできるはず。
表示オプション
横に並べて表示:
変化行の前後のみ表示: