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