組み合わせ
今、N個の2値変数がある。それが作るの組み合わせを発生させて順次、処理するとする
public static void hoge(int numval){
int v=numval;
int[] altlist = new int[v];
int[] one = new int[v];
for(int i=0;i<v;i++){
altlist[i]=0;
if(i==0){
one[i]=1;
}else{
one[i]=0;
}
}
int sum = 0;
while(sum<v){
//altlistにはn個の変数の値が格納されている
//それを用いて必要な処理をする
//altlistの更新
sum=0;
for(int i=0;i<v;i++){
sum+=altlist[i];
}
addNshin(altlist,one,2);
}
}
//list表示のn進数の加算
public static void addNshin(int[] list1,int[] list2, int n){
int kuriage = 0;
for(int i=0;i<list1.length;i++){
if(list1[i] + list2[i]+ kuriage <n){
list1[i]+=list2[i] + kuriage;
kuriage=0;
}else{
list1[i] = list1[i]+list2[i] + kuriage -n;
kuriage = 1;
}
}
}