数列をある規則にそって時間発展させる。
その数列が初期値と一致した時のステップ数を測定する。
と言うプログラムなのですが、初期値と一致していないのにプログラムが止まります。
測定法はこのようにしています
T=0;
for(t=0;t<step;t++){
for(i=0;i<2*N;i++){
a_new[i]=g[p[i]][a[i]];
p[i+1]=f[p[i]][a[i]];
}
p[0]=p[2*N];
for(i=0;i<2*N;i++) printf("%d ",a[i]);
printf("\n");
for(i=0;i<2*N;i++) printf("-");
printf("\n");
for(i=0;i<2*N;i++) a[i]=a_new[i];
s=0;
for(i=0;i<2*N;i++){
if(a[i]==b[i]){
s=s+1;
}else{
T=T+1;
break;
}
}
if(s==2*N) break;
}
s=0を格納し、ステップごとにaとbが等しければs=s+1、異なっていればステップ回数T=T+1をしていく。
aが初期値の数列bと全て等しい時s=2*Nとなり、その時このループを脱する。
と言う風にしたのですが…うまくいかず初期値と等しくなくてもループを脱してしまいます。
一体どこがおかしいのでしょうか?
よろしくお願いします。