それを以下の条件で発展させて行きたい。
(1)u=0の時、u=0
(2)u=1の時、u[i+1]、u[i+2]…と数字を見ていきu[j]で初めて0が出た時u[j]=1
u[j]に1を入れれた時点でu=0を入れる
その後はそのu[j+1]の値を同じように見て行きたい
例えば
u[0]=0、u[1]=1、u[2]=1、u[3]=0、u[4]=0、u[5]=1、u[6]=0、u[7]=1、u[8]=1、u[9]=1、u[10]=0
とします。それが
01100101110
と並んでいる時、u[0]から順に数字を見ていき
u[0]=0なのでそのままu[0]=0
u[1]=1なのでu[2]、u[3]と見ていきu[3]=0なので、u[3]=1に更新し、u[1]=0に更新する
その後u[4]=0、u[5]=1と見てu[6]=0なのでu[6]=1、u[5]=0に更新する
u[7]=1なので、u[8]、u[9]、u[10]と見ていきu[10]=0なのでu[10]=1、u[7]=0に更新する
つまり
01100101110
と並んでいた数列が
00110010111
と言う風に更新されます
これのプログラムを書こうとしているのですが上手く行きません
for(i=0;i<10;i++){
if(u[i]==0) u[i]=0;
if(u[i]==1){
for(k=i+1;k<10;k++){
if(u[k]==0){
u[k]=1;
u[i]=0;
break;
}
}
}
}
結論としまして何が言いたいかと言うと上の例でいうところの「u[3]=1、u[1]=0に更新した後、u[2]ではなくu[4]の値からfor文のループを開始したい」と言うことです。
大変見苦しい説明で分かりづらいとは思いますが何卒宜しくお願いします。