藍橋杯 2023年第七屆真題 交換瓶子

2021-10-23 13:51:59 字數 882 閱讀 7919

題目描述:

有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...