PAT乙类1008之数组元素循环右移问题
生活随笔
收集整理的這篇文章主要介紹了
PAT乙类1008之数组元素循环右移问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、題目
一個數組A中存有N(>0)個整數,在不允許使用另外數組的前提下,將每個整數循環向右移M(≥0)個位置,即將A中的數據由(A?0A1?AN?1變換為(A?N?M?A?N?1A0A?1?A?N?M?1)(最后M個數循環移至最前面的M個位置)。如果需要考慮程序移動數據的次數盡量少,要如何設計移動的方法? 輸入格式: 每個輸入包含一個測試用例,第1行輸入N(1≤N≤100)和M(≥0);第2行輸入N個整數,之間用空格分隔。輸出格式: 在一行中輸出循環右移M位以后的整數序列,之間用空格分隔,序列結尾不能有多余空格。輸入樣例: 6 2 1 2 3 4 5 6 輸出樣例: 5 6 1 2 3 4二、代碼
方法一:(使用了額外的數組,但是是自己想的)
- 新的函數
沒有
*核心思想
之后我發現,我們只需要將a[0] ~ a[n] 循環移動,(移動后的需要進行標記,不能再移動), 就可以在最后完成移動。
所以需要a[n]來存儲數組,b[(m+i)%n]=1來確定是否這個下標的a[(m+i)%n]已經移動過!!
*問題
方法二:(網上的做法,很精彩)
- 核心思想
循環n次,也就將各個值放入了a【n】中
總結
以上是生活随笔為你收集整理的PAT乙类1008之数组元素循环右移问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特征计算 - 遍历求值提速 6 万倍 l
- 下一篇: Java用sqlit拆分小数_如何将SQ