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