私はこれを私のIT宿題として持っています "猿はN個のロッカーを開き、ロッカー1から始まりロッカーを2インチから2インチ(例:1はクローズ、2 3人は閉じている、4人は開いている)。彼は同じことをやり直すが、3人では3人である。閉じたロッカーを横切ったら、彼はそれを開くだろう。この問題は、どのロッカーが開いたままであるかを知りたがっています。2分2秒から3分3秒に数えて
N = 10の例があり、結果は2,5,10です。 どうしたのですか?
//NOTE : 1-OPEN, 0-Closed
int a[10],n,i,j,k=2;
cout<<"Cate colivii exista? ";cin>>n;
for(i=0; i<n; i++)
{
a[i]=1;
}
for(i=0; i<n; i=i+k)
{
if(a[i]==1)
a[i]=0;
else if(a[i]==0)
a[i]=1;
k++;
}
for(i=0; i<n; i++)
{
if(a[i]==1)
cout<<i<<" ";
}
//K should have been a number but i changed it.
return 0;
}
現在の結果は何ですか?またはこれを確認するためにプログラムをビルドして実行すると思われますか?また、中間ステップを紙に書いてからプログラムをデバッグする場合は、間違いなく自分で問題を見つける必要があります。 – grek40
forループ内で 'k'をインクリメントします... forループの最初の反復はk = 2、次の反復はk = 3などとなります。あなたは' k'をインクリメントし続けるので、 'i'は'> n 'は非常に速く、ループは終了します。 – Rorschach
@Rorschachが正しいです。ループ内で 'k 'をインクリメントしているので、2 in 2、3 in 3、4 in 4などが1回の繰り返しで発生します。あなたは間違って何をしているのかを理解するために、紙のコードを手作業で行ってみるべきです。 – Yankee