• 締切済み

C言語で重複組合せを全列挙

よろしくお願いします。当方プログラミング初心者です。 ある配列a[]={1,1,2,2,3,3}があります。 この配列の重複組合せを全列挙したいのですが、 どういうプログラムを組めばいいのでしょうか? よろしくお願いします!

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

その6個の要素から、重複を許して「何個の」要素を取り出したいのですか?

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.1

各要素が、「ある」「なし」のすべての組み合わせと言うことですよね。 こんな感じで、intが32bitならaの要素が31個までは出来ると思います。 #include <stdio.h> #include <math.h> main() { int a[]={1,1,2,2,3,3}; #define N (sizeof a/sizeof a[0]) int i,j; for(i=0;i<pow(2,N);i++){ printf("%d:",i+1); for(j=0;j<N;j++){ if(i & 1<<j){ printf("%d ",a[j]); } } printf("\n"); } }

関連するQ&A

専門家に質問してみよう