思維題 C052 LQ 交換瓶子(一直交換)

2021-10-23 21:59:32 字數 704 閱讀 7355

有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

55 4 3 2 1

樣例輸出

32

方法一:

這題我還以為是貪心,但是個暴力,如果 a[i] 不是 i,則將下標為 i 的值放到 a[i] 位置,這樣起碼至少可以讓 a[i] 歸位

但不能全對…

#include

using

namespace std;

intmain()

} cout << ans;

return0;

}

複雜度分析

C05 變數屬性

6.總結 語法 property type var name 示例 intmain void f include register int g val error int main include int g val 全域性變數,可以在程式的任意位置訪問 static int g sval 靜態全域...

C 05 單例模式

乙個類只能被例項化一次,產生乙個物件。在類中,要構造乙個例項,就需要通過建構函式,所以為了防止在外部呼叫類的建構函式而構造例項,需要將建構函式的訪問許可權標記為protected或private 並且需要提供給全域性訪問點,就需要在類中定義乙個static函式,返回在類內部唯一構造的例項。懶漢式 在...

設計模式(C ) 05介面卡模式

推薦閱讀 自然界有一條規則 適者生存。意思是生物要使用自然界的變化 在程式界中則需要新環境呼叫現存物件。那麼,如何在新環境中呼叫 現存的物件 呢?採用介面卡模式可以解決。介面卡模式使得新環境中不需要去重複實現已經存在了的實現,而很好的把現有的物件 指原來環境中的現有物件 加入到新環境中來使用。介面卡...