【問題描述】
有n個整數,使其中所有整數順序向右(向後)迴圈移動m個位置。編寫乙個函式實現以上功能,在主函式中輸入n個整數並輸出調整後的n個整數。
【輸入形式】
首先列印「input n,m:」;然後直接在冒號後面輸入資料正整數n,表示共有n個整數;空一格;輸入m,表示順序向右(向後)迴圈移動m個位置;回車。
連續輸入n個整數數值,每個數值之間用空格隔開;回車;
【輸出形式】
首先列印「after move:」;然後直接在冒號後面輸出n個已調整後的整數,其中每個整數占居五個字元位,如果不足5個字元位,則在其前面用空格填補。
【輸入樣例】(下劃線部分表示輸入,無下劃線部分表示輸入前的提示)
input n,m:5 3
1 2 3 4 5
【輸出樣例】
after move: 3 4 5 1 2
解題思路與易錯分析:
這個題一共有兩個易錯點:
1:對於移動的理解這就像當與是乙個環首個元素向後移動乙個原最後的乙個元素成為第乙個元素,然後就是乙個乙個迴圈
其實不難看出這其實就是乙個求模的問題,因為是看成環,而不是環現實中你可能用陣列來存的,所以要求模(不能超過陣列的長度啊)
2:對於iomanip的中setw與setfill的運用
下面附上我的**:
#include
#include
using namespace std;
int main()
for(int j =n-1; j >=0; j--)
cout << "after move:";
for(int i =0; i < n; i++)
return 0;
}
面試題 調整陣列順序使所有的奇數字於偶數前面
調整陣列順序,使所有的奇數字於偶數前面這是乙個面試的時候經常會遇到的題 正所謂的面試題 當拿到這個題目,你首先會想到的是遍歷這個陣列每碰到偶數時,拿出這個數字與其後的數字交換,但這樣的話其時間複雜度為o n n 若面試官沒有時間複雜度的要求,那麼這樣就可以了 但是往往不能體現出你的能力,你還可以優化...
整數組順序使奇數字於偶數前面
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。示例 輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。解法 二,雙指標實現 我們可以使用兩個指標left和right。left從左邊開始掃...
調整陣列順序使奇數字於偶數前面
題目 輸入乙個整數陣列,調整陣列中數字的順序,使得所有奇數字於陣列的前面部分,偶數字於陣列的後面部分。思路 要求時間複雜度是 n 1 從頭開始掃瞄陣列,確定數是奇數不動,偶數的話就移動陣列最後。這樣每個偶數都要進行移動,最壞的時間複雜度達到 n 2 2 用兩個指標,頭指標指向陣列開始,尾指標指向陣列...