藍橋 交換瓶子

2021-07-27 05:45:44 字數 890 閱讀 4122

交換瓶子

有n個瓶子,編號 1 ~ n,放在架子上。比如有5個瓶子:2 1 3 5 4要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為:1 2 3 4 5

對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。

如果瓶子更多呢?你可以通過程式設計來解決。

輸入格式為兩行:

第一行: 乙個正整數n(n<10000), 表示瓶子的數目

第二行:n個正整數,用空格分開,表示瓶子目前的排列情況。

輸出資料為一行乙個正整數,表示至少交換多少次,才能完成排序。

例如,輸入:

5 3 1 2 5 4

程式應該輸出:

3再例如,輸入:

5 5 4 3 2 1

程式應該輸出:

2思路:不斷將最大的數放回原位,我用了兩個陣列,乙個存排序後的位置,乙個存原先位置的下標,並且在排完一次後下標隨之改變。一開始沒發現是這樣的自己還是太渣。

**:

#include 

#include

#include

#include

#include

#include

using

namespace

std;

int bolt[11000];

int index[11000];

int value[11000];

int main()

sort(value, value+n);

int sum = 0;

for(int i=n-1; i>=0; i--)

cout

<< sum << endl;

}return

0;}

藍橋 交換瓶子

有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正整數n n...

交換瓶子 藍橋杯

交換瓶子 有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正...

藍橋杯 交換瓶子

交換瓶子 有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正...