藍橋杯 交換瓶子

2021-10-04 01:50:24 字數 889 閱讀 8987

有 n 個瓶子,編號 1∼n,放在架子上。

比如有 5 個瓶子:

2 1 3 5 4

要求每次拿起 2 個瓶子,交換它們的位置。

經過若干次後,使得瓶子的序號為:

1 2 3 4 5

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

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

第一行包含乙個整數 n,表示瓶子數量。

第二行包含 n 個整數,表示瓶子目前的排列狀況。

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

1 ≤n

≤10000

1≤n≤10000

1≤n≤10

000

5

3 1 2 5 4

思路

#include

#include

using

namespace std;

const

int n =

1e4+20;

int n, res, e[n]

, ne[n]

, h[n]

, idx;

bool st[n]

;void

add(

int a,

int b)

void

dfs(

int x)

}int main (

)for

(int i =

1; i <= n; i ++)}

cout << n - res;

return0;

}

交換瓶子 藍橋杯

交換瓶子 有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次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正...

藍橋杯 交換瓶子

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