18 12 16 DSA 吉老師的漢諾塔

2022-02-28 19:52:48 字數 1263 閱讀 5042

吉老師的面前出現了一座漢諾塔!但是這個漢諾塔好像壞了,盤子並不是按照從大到小的順序排列的……吉老師非常不開心,立志要把這個漢諾塔修好!吉老師每分鐘可以交換挨在一起的兩個盤子,吉老師希望用的時間最短,吉老師不會啊,你能幫幫吉老師嗎?

第一行1個整數n。

第二行為n 個非負整數,按從下到上的順序給出每個盤子的大小。

對於50%的資料,2<=n<=1000。

對於100%的資料,2<=n<=100000。輸出乙個整數,表示最少需要交換多少次相鄰的盤子才能將盤子遞減排列。同樣大小的盤子應該排在一起。

5

1 3 10 8 5

7
吉老師經過多次嘗試,發現最優情況下的每次交換中,一定是將小盤子放到**子的上面,這樣它們就從逆序變成了順序,而且只有這一對盤子從逆序變成了順序,所以總共逆序的盤子對數恰好減少一。而當沒有逆序的盤子時,漢諾塔就修好啦。

1 #include 2 #include 

3 #include 4 #include 5 #include

6 #include 7 #include 8 #include 9 #include

10 #include 11 #include 12

#define maxn 100005

13#define inf 999999

14#define cha 127

15using

namespace

std;

1617

intn;

18int

plate[maxn], tmp[maxn];

19long

sum;

2021

void mysort(int left,int

right) 33}

34while (i <=mid)

35 tmp[p++] = plate[i++];

36while (j <=right)

37 tmp[p++] = plate[j++];

38for (int p = left; p <= right; p++)

39 plate[p] =tmp[p];40}

4142

void

init()

4950

intmain()

51

view code

照搬了之前的作業求逆序對。提示說得很清楚,坑點在於答案超過了int範圍

加密解密 DSA演算法

digital signature algorithm dsa 是schnorr和elgamal簽名演算法的變種,被美國nist作為dss digitalsignature standard 演算法中應用了下述引數 p l bits長的素數。l是64的倍數,範圍是512到1024 q p 1的160...

openssl gendsa 生成DSA私鑰

介紹openssl gendsa根據dsaparam 檔案生成dsa私鑰檔案。dsa是美國nist作為數字簽名標準 digitalsignature standard 語法openssl gendsa out filename des des3 idea rand file s engine id ...

影像科dsa為什麼必須買維修保險 DSA的維護修理

裝置執行與保障 operation guarantee for instruments dsa是介入手術 的重要裝置,在醫院屬貴重大型 裝置,需定期進行維護保養,而且維護保養從購買 設計 機房和安裝裝置就應開始。維護保養做得好,出現故障的 機會就少。在維護過程中及時發現問題,處理問題,能夠 很好地避...