賺經驗(貪心演算法)

2021-10-08 15:34:19 字數 747 閱讀 2801

賺經驗

描述小明在玩一款電腦遊戲,裡面有一關是這樣的:

戰場上有n個敵人,小明必須把他們全部打敗才能通過這關,不過戰鬥順序可以小明自己決定。小明如果打敗乙個比自己經驗值高的敵人,那麼小明會賺取2點經驗值,否則賺取1點經驗值。

現在給你小明初始時的經驗值和n個敵人的經驗值,你能計算出小明最後經驗值最高可以到多少嗎?

輸入輸入包含多組測試資料。

每組第一行輸入兩個正整數n(n<=500)和e(e<=1000),n表示敵人的個數,e表示小明初始時的經驗值。

接下來一行輸入n個正整數,表示每個敵人的經驗值,所有經驗值均不超過1000。

輸出對於每組輸入,輸出小明最後可以到達的最高經驗值。

輸入樣例 1

5 91

88 90 92 94 98

輸出樣例 1

99**

先把比小明經驗值大的敵人按照經驗值從小到大排序,然後從這些人中經驗值最小的那個敵人開始逐一打敗,最後再打敗那些一開始經驗值就比小明低的敵人,這就是最優解

#include

using

namespace std;

intmain()

sort

(a,a+n)

;for

(i=0

;ip=n-k;

e=e+p;

printf

("%d\n"

,e);

}return0;

}

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...