題目:
交換瓶子
有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
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
//思路:每次找剩下資料中的最小元素,把他放在屬於他 的位置(公升序情況下)
**:
//思路:每次找剩下資料中的最小元素,把他放在屬於他 的位置(公升序情況下)
#include
int search (
int i)
;int n ;
int a[
10000]=
;int main (
void
)for
(i =
0; i < n; i++
) index ++;}
printf (
"%d"
, count)
;return0;
}int search (
int i)
}return index ;
}
交換瓶子 藍橋杯
交換瓶子 有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 次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。第一行包含乙個整數 n,...