貪心演算法—problem k
題意 有n種顏色(不包括灰色),任意三種顏色各x ml混合可以得到x ml灰色,一整套顏料包括n種顏色,每種50ml,現給出對每種顏色以及灰色的需求量,要求至少需要多少套顏料才能達到要求。
解題思路
首先處理輸入的幾種顏色(不包括灰色),把他們放入陣列中然後再輸入的同時找出最大的,根據這個最大的找出至少需要多少套。然後再處理灰色,將找出的最少顏料套數減去需要的顏料得到剩餘的顏料,並把它們放入剩餘顏料陣列中,並降序排列,用剩餘的顏料去湊灰色,如果湊不夠就加顏料套數,直到湊夠為止。在這過程中可設定標誌位結束。最後計算出套數。
感想 感覺這題目很難,換了兩種思路才勉強ac,繼續練習。
ac**
#include
#include
#define num 15
using
namespace
std ;
bool cmp(const
int &a , const
int &b)
int max(const
int &a , const
int &b)
int main()
cin >> gray ;
int ans = 0 ;
if (maxx%50 == 0)
else
for (i = ans ; ; i++ )
while (1)
k--;
for (j = 0 ; j < 3 ; j++ )
} if(flag) break ;
} cout
<< i << endl ;
} }
經典貪心演算法 貪心演算法概述
貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...
演算法 貪心演算法
把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...
演算法 貪心演算法
集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...