1.這是一個控制數組元素右移的問題。將一個數組中的所有元素全部向同一個方向移動相同的距離。如果一個元素移動的距離大于該元素與最后一個元素的距離,則應該接著第一個元素繼續移動。
2.這是一個數組的問題,移動距離其實就是元素的賦值,把元素的值賦給他移動后所在的單元就可以了。
3.先想想對于一個單獨的元素因該怎么處理:
①先要弄清楚的就是元素的位置的象征其實就是它的下標,位置的改變其實就是下標的改變。
②然后就是對一個元素的處理分為兩種情況:
a.移動不會使下標超過上限或者下限;
b.移動會使下標超過上限或者下限。
③要分出這兩種情況,首先就要一個判斷,要設計一個判斷的語句來對分別對應這兩種情況元素進行分流。
④對于a情況,很容易處理。元素的下標加上或者減去要移動的距離就是目標單元,再把元素的值賦給這個單元即可。
⑤對于b情況,稍微復雜一點。比如這個數組長度為10,元素A的要向右移,那么它的下標要加上移動的距離,加起來以后的值n>9。那么在移動到第十個元素的位置的時候,A元素還要繼續向右移,還要移動的距離s就是等于n-9,而這時候下標是從零開始加,所以下標還要減1,所以最后目標單元的下標就是n-10,最后進行賦值就可以了。
⑥在弄明白一個元素怎么處理后,就可以用循環語句對整個數組進行處理了。
4.這個問題最關鍵的就是對下標的運算還有兩類情況怎么區分。這兩個問題解決就是循環語句和判斷語句的運用了。
5.對于情況b,有時候可以簡化算法,這個分類就會更多,要加多一些判斷語句。總體來說我都是自己演算出來的。
浙公網安備 33010602011771號