SZUOJ 迴圈移位 取模細節

2021-09-05 09:38:36 字數 1137 閱讀 7895

順序表的移位是迴圈移位,例如順序表:1,2,3,4,5,6。如果左移1位,即原來的頭元素移動到末尾,其它元素向左移1位,變成2,3,4,5,6,1。同理,如果右移1位,即原來的尾元素移動到頭,其它元素向右移1位,變成6,1,2,3,4,5。以下是移位的多個例子:

原資料:1,2,3,4,5,6

左移3位:4,5,6,1,2,3,與原資料對比

右移4位:3,4,5,6,1,2,與原資料對比

請編寫程式實現順序表的迴圈移位操作

輸入

第1行輸入n表示順序表包含的·n個資料

第2行輸入n個資料,資料是小於100的正整數

第3行輸入移動方向和移動的位數,左移方向為0,右移方向為1

第4行輸入移動方向和移動的位數,左移方向為0,右移方向為1

輸出

第一行輸出建立後,順序表內的所有資料,資料之間用空格隔開

第二行輸出第一次移位操作後,順序表內的所有資料,資料之間用空格隔開

第三行輸出第二次移位操作後,順序表內的所有資料,資料之間用空格隔開

樣例輸入

5 11 22 33 44 55

0 21 4

樣例輸出

11 22 33 44 55

33 44 55 11 22

44 55 11 22 33

元素位移後新的位置可以用 ((i-dis)+len)%len 確定,其中i是當前元素下標,dis是位移量,len是陣列長度。

紅字部分的作用是當對負數取模時結果仍舊是乙個負數,取模是負無窮取餘數。

舉個例子,(-4)% 7 = -4

因此 +len 來使得元素左移或右移後超出合理位置的情況發生時,讓它重新回到隊首或隊尾。

#include using namespace std;

class seqlist

seqlist(int _len)

void insert(int index,int val)

else

cout<<"error"<0 && index<=len)

void consecutive_del()

}

mysql迴圈移位 左迴圈移位

例項十三 左迴圈移位 方法 result n 32 k 1 b 將n的左端的k位先放到b中的低位中。b n 32 k 2 c 將n左移k位,起右邊低位k位補0。c n 3 將b和c進行或操作.解釋 原數 1011 1100 右移k位 0000 0010 將原數高位的10 移到最低位儲存 方法中的b ...

陣列迴圈移位

陣列迴圈移位 對於存有n個整數的陣列,將其向左迴圈移動k個位置,x0,x1,xn 1 變換為 xk,xk 1,xn 1,x0,x1,xk 1 最直接的方法就是每次將首位的數放到乙個臨時的整型變數中,後面n 1個數一次左移,這樣需要k次才能完成,而每次的複雜度是o n 因此總共其複雜度是o k n 一...

陣列迴圈移位

題目 設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求複雜度為o n 且只允許使用兩個變數 思考問題 1 考慮原始解法 直接迴圈移動陣列k次,則演算法複雜度為0 n k 使用額外兩個變數完成,顯然複雜度依賴於k的值,如果k n,則演算法複雜度大於或等於o n 2 2 考慮改進 原始演算法複...