貪心演算法 藍橋杯

2021-10-08 08:41:48 字數 1269 閱讀 5693

在mars星球上,每個mars人都隨身佩帶著一串能量項鍊。在項鍊上有 n顆能量珠。能量珠是一顆有頭標記與尾標記的珠子,這些標記對應著某個正整數。並且,對於相鄰的兩顆珠子,前一顆珠子的尾標記一定等於後一顆珠子的頭標 記。因為只有這樣,通過吸盤(吸盤是mars人吸收能量的一種器官)的作用,這兩顆珠子才能聚合成一顆珠子,同時釋放出可以被吸盤吸收的能量。如果前一顆 能量珠的頭標記為m,尾標記為r,後一顆能量珠的頭標記為r,尾標記為n,則聚合後釋放的能量為mrn(mars單位),新產生的珠子的頭標記為m, 尾標記為n。

需要時,mars人就用吸盤夾住相鄰的兩顆珠子,通過聚合得到能量,直到項鍊上只剩下一顆珠子為止。顯然,不同的聚合順序得到的總能量是不同的,請你設計乙個聚合順序,使一串項鍊釋放出的總能量最大。

第一行是乙個正整數n(4≤n≤100),表示項鍊上珠子的個數。第二行 是n個用空格隔開的正整數,所有的數均不超過1000。第i個數為第i顆珠子的頭標記(1≤i≤n),當i〈n時,第i顆珠子的尾標記應該等於第i+1顆 珠子的頭標記。第n顆珠子的尾標記應該等於第1顆珠子的頭標記。

至於珠子的順序,你可以這樣確定:將項鍊放到桌面上,不要出現交叉,隨意指定第一顆珠子,然後按順時針方向確定其他珠子的順序。

最大總能量就是先要把數字小的先吞併,最後面剩下大的。

樣例:5

2 4 3 6 5

1、先把珠子從小到大排序存放在乙個新的陣列;

2、通過新的陣列迴圈一邊,依次把每乙個值在原先陣列找到;

3、找到會有三種情況

在第乙個位置:

sum+=a[n-i-1]*a[j+1]*t;

在最後乙個位置:

sum+=a[j-1] *a[0]*t;

在中間位置:

sum+=a[j-1]*a[j+1]*t;

4、然後再把原先陣列的這個當前最小的值用後面的數覆蓋。

第一次找:2

原陣列: 4 3 6 5

第二次找:3

原陣列: 4 6 5

……總能量:412

#include

#include

using

namespace std;

int a[

1000];

int b[

1000];

intmain()

sort

(b,b+n)

;//預設公升序排序

for(

int i=

0;i)//b陣列的下標 }}

} cout

}

藍橋杯 完美的代價(貪心演算法)

基礎練習 完美的代價 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mama...

藍橋杯 翻硬幣(C )(貪心演算法)

前言 之前做過乙個類似的題。這道題一看就感覺是遇到不同的硬幣就連翻兩個。結果真ac了。也是第一次做對貪心演算法的題。進入正題 問題描述 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左...

貪心演算法 藍橋杯基礎練習Huffman樹

貪心演算法 所謂 貪心演算法 是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說。不從整體上加以考慮,它所做出的僅僅是在某種意義上的區域性最優解 是否是全域性最優,需要證明 例如 藍橋杯 基礎練習huffman樹 問題描述 huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心huff...