我把這作爲我的IT作業 「一隻猴子打開N個儲物櫃。然後,他從儲物櫃1開始,並從2入2關閉儲物櫃(例如:1關閉,2是開放的,3是封閉的,4是開放的),然後他再次做同樣的事情,但在3中是3。如果他碰到一個封閉的儲物櫃,他會打開它,他這樣做了N次。問題想知道哪些儲物櫃保持打開狀態。從2中2然後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合2,3合3,4合4等將在單次迭代中發生。您應該嘗試在紙上手動查看代碼,以瞭解您做錯了什麼。 – Yankee