藍橋杯 16省賽 A9 交換瓶子 找閉環

2021-10-08 17:28:02 字數 780 閱讀 9633

交換瓶子

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

比如有5個瓶子:

2 1 3 5 4

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

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

1 2 3 4 5

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

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

輸入格式為兩行:

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

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

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

例如,輸入:

53 1 2 5 4

程式應該輸出:

3再例如,輸入:

55 4 3 2 1

程式應該輸出:

2資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

思路:根據不對號的瓶子開始找環,直到環閉合(找到一開始瓶子的值)

整個過程不需要交換瓶子的值,一次性遍歷閉環上的值

(os:網上說這是貪心,但我沒有感受到,貪心不是像bfs那種嗎)

public

class 交換瓶_想複雜了_9

} system.out.

println

(ans);}

private

static

void

init()

}

藍橋杯 交換瓶子 第七屆藍橋杯省賽C B組

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

16年藍橋杯第九題 交換瓶子

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

藍橋杯 18省賽 A9 倍數問題 倒序dfs

題目描述 眾所周知,小蔥同學擅長計算,尤其擅長計算乙個數是否是另外乙個數的倍數。但小蔥只擅長兩個數的情況,當有很多個數之後就會比較苦惱。現在小蔥給了你 n 個數,希望你從這 n 個數中找到三個數,使得這三個數的和是 k 的倍數,且這個和最大。資料保證一定有解。輸入格式 從標準輸入讀入資料。第一行包括...