題目描述:
有n個瓶子,編號 1 ~ n,放在架子上。
比如有5個瓶子:
2 1 3 5 4
要求每次拿起2個瓶子,交換它們的位置。
經過若干次後,使得瓶子的序號為:
1 2 3 4 5
對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。
如果瓶子更多呢?你可以通過程式設計來解決。
輸入第一行: 乙個正整數n(n<10000), 表示瓶子的數目
第二行:n個正整數,用空格分開,表示瓶子目前的排列情況。
輸出輸出資料為一行乙個正整數,表示至少交換多少次,才能完成排序。
輸入樣例 1
53 1 2 5 4
輸出樣例 1
思路:。。。。就是這麼簡單,你沒看錯,直接判斷然後交換就行。有點貪心的味道,就是我們這裡的判斷交換已經是區域性最優解了
**:
#include
#include
using
namespace std;
int ans=0;
int n;
int a[
10001];
intpos
(int x)
return-1
;}void
swap
(int i,
int j)
intmain()
for(
int i=
1;i// for(int i=1;i<=n;i++)
// coutreturn0;
}
變化:
就是1~n,然後亂序,然後每次只能交換相鄰的兩個數
不連續的數,然後每次只能交換相鄰的兩個數
不連續的數,如何每次交換兩個
交換瓶子 2023年第七屆藍橋杯
交換瓶子 有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4 要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正...
2023年第七屆藍橋杯C B組F題
如圖,如下的10個格仔,填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。這道題也是組合問題啦 next permutation解決,分分鐘啊哈哈哈 就是judge的時候有點點麻煩,但是很直觀,超簡單的啦 我標記的時候是這...
2023年第七屆藍橋杯C B組G題
如圖所示,有12張連在一起的12生肖的郵票。現在你要從中剪下5張來,要求必須是連著的。僅僅連線乙個角不算相連 比如,如圖所示,粉紅色所示部分就是合格的剪取。解題思路就是dfs出5個數出來,也就是12個數選5個數。再判斷連通性,判斷是否連通。模擬乙個矩形出來。找到行和列與填的數字的關係 值的行等於 n...