逆方向にインクリメントして、配列内の値のすべての組み合わせを調べたい。
それでは、配列を用意しましょう
int array[10] = {0,0,0,0,0,0,0,0,0,0};
このようにインクリメントしたい: {0,0,0,0,0,0,0,0,0,1} > {0,0,0,0,0,0,0,0,0,2 }...{p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1,p-1}.
より小さな配列の例では、p=3 : {0,0,0}>{0,0,1}>{0,0,2}>{0,1,0}>{0,1,1}>{ 0,1,2}...{2,2,2}
sizeof(int)*m
1<=m<=10 の場合、配列は大きくなる可能性があります。
誰かがそのためのアルゴリズムを手伝ってくれますか?
編集:申し訳ありませんが、これを忘れていました..
混乱して申し訳ありませんが、もう1つ条件があります..
その配列はその形式にはなりません。この例のようなものになります
int array[10] = {0,0,0,0,0,0,0,0,0,0};
int help[10] = {3,4,0,1,0,0,3,0,1,0};
そして、配列[help[]!=0]の値の組み合わせを取得したい、この場合は配列[0]、配列[1]、配列[3]、配列[6]、配列[8]なので->
int array[10] = {0,0,0,0,0,0,0,0,0,0};
int array[10] = {0,0,0,0,0,0,0,0,1,0};
int array[10] = {0,0,0,0,0,0,0,0,2,0};
int array[10] = {0,0,0,0,0,0,1,0,0,0};
int array[10] = {0,0,0,0,0,0,1,0,1,0};
int array[10] = {2,2,0,2,0,0,2,0,2,0};
p=3
そのような for() サイクルは i=0,1,3,6,8 になり、値は i=help[i]!=0 です。