(我是初學者)練習中的問題

2022-09-27 18:09:06 字數 792 閱讀 2942

問題:300個人圍成乙個圈,從某個指定的人開始報數(1--3),凡是數到3的人退出圈子,問最後剩下的乙個是從指定位置開始計數的第幾個人?

我先來說說我的思路,做為乙個初學者,思維還停留在數學方法上,首先想到的是建立乙個陣列,但是怎麼把他們變成乙個圓是乙個難點。

首先下標凡是(i+1)%3=0的,都把值賦為1,同時計數器count加1,這是第一輪。

第二輪,因為上一輪在最後乙個報3的人後,可能還有1/2人報數,所以這輪是把上輪留下的人數b+i來對3求餘(b+i+1)%3=0的賦值為1。想到這,問題來了,如果碰到上一輪退出的也就是值為1的不報數,所以我們要在(b+i+1)中減去,這樣就要去定義乙個計數器來對此計數·····

這樣一邊寫,一邊想,一邊到前面去補變數,補相應的**,寫出來的程式長不說,一旦哪個地方沒想好,就得回去改,還得在草稿上算相應的數字,非常麻煩。

而老師是樣的呢?

同樣是用陣列a(初始值為0),另外定義了3個變數,i陣列下標,count計數器計算退出的人數,n報數(123)。

然後開始迴圈count<299,i++並且n++,if(n=3&&a[i]=0),陣列項=1,並且n=1。否則i++且n--。最經典的地方就是,if(i=alength-1)時i=0,這樣就直接開始了第二次迴圈,把乙個直線變成了乙個圓。

我們經常驚訝老師的**簡潔,思路新奇,我們沒有想到,其實就目前來說,我們只要能做出最後的結果,不是瞎矇而是自己的思路,能做出最後的結果就行,在做好後,拓展想一想,哪些步驟可以合併,哪些步驟可以用別的方法來完成。老師的**方式,在遇到什麼問題的時候可以使用同樣的思維方式,時間長了,積累足了,就能寫出較高質量的**了。

我是Lua初學者 2

syntax 1 if else用法比較簡單,類似於c語言,不過此處需要注意的是整個if只需要乙個end,哪怕用了多個elseif,也是乙個end.例如if op then r a b elseif op then r a b elseif op then r a b elseif op then ...

(我是初學者)html求教

先看兩段 一function divmove ss speed imgobj.style.left ss px 變換 if countimg 100 else countimg if countimg 200 20毫秒後再次執行該函式 x window.settimeout divmove 20 二...

我是初學者 自己封裝元件

隨著學習的深入,開始接觸容器,開始使用jframe,jlable等等來顯示相應的內容。但是每次需要的時候,就要設定相應元件的大小位置,並新增到jframe中,相關 需要重複寫,所以為了方便,就會自己寫個帶引數的構造器,這樣需要新增的時候,就只需要new一下,把相關的引數填一下就可以了,這是最開始的封...