數字移動排列

2022-07-12 02:36:11 字數 828 閱讀 4062

給定乙個數列,長度為m(m為偶數),f(x) = x(即數列m為1,2,3,4.....m)

①將數列第乙個元素放到最後

②將數列的1,2交換,3,4交換,....,m-1,m進行交換

輸入有兩行,第一行m, n,m為數列最大值,n為使用方法①②的個數

第二行為n個數字,數字為1或2,分別代表方法①②

輸出為一行,輸出排列好的數列m

輸入輸出示例

輸入6 3

1 2 1

輸出2 5 4 1 6 3

(該數列是從 123456 > 234561 > 325416 > 254163)

解題思路為遍歷方法即1,2數列,是否存在連1,連2,因為我們知道,如果該數列中若存在1111只需要一次移動4個即可,對於連2,如果為偶數個2,則不需移動,如果為奇數個只需要移動一次。若無連1,連2,則直接進行移動,若有連1,2則傳送給移動方法進行移動。

#includeusing namespace std;

void func_1(int *ptr, int num, int n)//將數列前num位移動到數列後

if(num_1 > 0)

if(flag == 0)

} for(int i=0; i>n;

cin>>m;

func(n, m);

return 0;

}

示例

騰訊 數字排列

宣告 題目來自 http blog.csdn.net v july v archive 2010 11 17 6015165.aspxhttp blog.csdn.net v july v archive 2011 01 10 6126406.aspx自己先做一遍。題目 初看此題,貌似很難,10分鐘...

排列數字問題

數字排列問題 今有7對數字 兩個1,兩個2,兩個3,兩個7,把它們排成一行。要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列 17126425374635 當然,如果把它倒過來,也是符合要求的。請你找出另一種符合要求的排列法,並且這...

數字全排列

public class arrayrank private int n numbers.length 用來標記圖中結點是否被遍歷過 private boolean visited new boolean n 圖的二維陣列表示 private int graph new int n n 數字的組合 ...