有 n 個瓶子,編號 1∼n,放在架子上。
比如有 5 個瓶子:
2 1 3 5 4
要求每次拿起 2 個瓶子,交換它們的位置。
經過若干次後,使得瓶子的序號為:
1 2 3 4 5
對於這麼簡單的情況,顯然,至少需要交換 2 次就可以復位。
如果瓶子更多呢?你可以通過程式設計來解決。
輸入格式:
第一行包含乙個整數 n,表示瓶子數量。
第二行包含 n 個整數,表示瓶子目前的排列狀況。
輸出格式:
輸出乙個正整數,表示至少交換多少次,才能完成排序。
資料範圍:
1 ≤ n ≤ 10000,
輸入樣例1:
5
3 1 2 5 4
輸出樣例1:
3
輸入樣例2:
5
5 4 3 2 1
輸出樣例2:
2
置換圖: 每次交換同一圖中的兩個元素會使得圖一分為二,交換不同圖中的兩個元素會使得兩圖合二為一,如果想每個元素為乙個圖的話,就交換 n - 圖數
#includeusing namespace std;
const int n = 10010;
int b[n],st[n];
int main()
}cout<#include#includeusing namespace std;
int a[10010],b[10010];
maphashc;
int main()
sort(b,b + n);
for (int i = 0 ; i < n; ++i)
}cout
}
第七屆藍橋杯省賽C B組 交換瓶子
演算法標籤 圖論 環 置換群 貪心 題目描述 有 n 個瓶子,編號 1 n,放在架子上。比如有 5 個瓶子 2 1 3 5 4 要求每次拿起 2 個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換 2 次就可以復位。如果瓶子更多呢?你可...
藍橋杯 交換瓶子 第七屆藍橋杯省賽C B組
有 n 個瓶子,編號 1 n,放在架子上。比如有 5 個瓶子 2 1 3 5 4要求每次拿起 2 個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5對於這麼簡單的情況,顯然,至少需要交換 2 次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式 第一行包含乙個整數...
第七屆藍橋杯省賽C B組 抽籤
抽籤 x星球要派出乙個5人組成的觀察團前往w星。其中 a國最多可以派出4人。b國最多可以派出2人。c國最多可以派出2人。那麼最終派往w星的觀察團會有多少種國別的不同組合呢?下面的程式解決了這個問題。陣列a 中既是每個國家可以派出的最多的名額。程式執行結果為 defff cefff cdfff cde...