一、貪心演算法概念
貪心演算法通過做出一系列選擇來求出問題的最優解,在每個決策點,它做出在當時看來最佳的選擇。由此可見,貪心演算法並不從整體最優考慮,它所作出的選擇只是在某種意義上的區域性最優選擇,但是對許多問題它都所得到的解都是全域性最優解。
二、相關題目
第一題:sicily 1198. substring
第二題:sicily 1681 matchsticks#include
#include
using
namespace
std;
//重寫比較函式,用兩種方式連線兩字串,按得到的字串字典序較小的情況來排序
//如果不重寫比較函式,那麼就是直接按字典序比較 a,b 的大小
//但是這樣排序後將字串連線起來的不一定是最小字典序
//比如:b,ba; 按字典排序後再連線起來是 bba, 但正確應該是 bab
bool compare(string s1, string s2)
int main()
return
0;}
第三題:sicily 1620 scvs and minerals#include
#include
#include
#include
using
namespace
std;
//找用 n 根火柴能拼出的最大的數
string largest(int n)
//如果有奇數根火柴,則最高位數字為 7,其餘的均為 1
else
return str;
}int main()
}while(t--)
return
0;}
第四題:sicily 2503 最長字串#include
using
namespace
std;
int main()
}cout
<< m << endl;
}return
0;}
#include
#include
#include
#include
#include
using
namespace
std;
//counta, countb, maxa, maxb都不為0時,以較小的數為分隔
//要根據兩者之間數量的關係來確定第一小段的數量
int longest(int small, int large, int ms, int ml)
int main()
else
if(!counta && countb)
else
if(!countb && counta)
else
cout
<< 0
<< endl; //兩者數量都為 0時,直接輸出 0
}else
if(!maxa && maxb)
else
if(!maxb && maxa)
else
cout
<< 0
<< endl; //maxa,maxb都為 0,輸出為 0
return
0;}
貪心 02 貪心演算法題目解析
122.買賣 的最佳時機 ii 134.加油站 給定乙個陣列,它的第 i 個元素是一支給定 第 i 天的 設計乙個演算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易 多次買賣一支 注意 你不能同時參與多筆交易 你必須在再次購買前 掉之前的 示例 1 輸入 7,1,5,3,6,4 輸出 7...
貪心演算法 附貪心相關習題
定義 貪心演算法是一種求解最優解的方法。它是按照某種最優策略,將複雜問題層層分解成子問題 每次一般只有乙個 並求子問題的最優解得到整個問題的最優解。貪心演算法並不是從整體上考慮問題,它所做出的選擇只是在某種意義上的區域性最優解。在每個子問題的選擇中只選擇區域性最優解,從而達到全域性最優解的一種演算法...
貪心演算法之經典題目 訂票
題目 一票務辦公室為 會售票,某一固定數量的連號票 簡稱套票 購票訂單以該套票中最小的座位號作為標誌。由於不能滿足所有訂單,故而採用 若訂單完全滿足觀眾要求的票全價 若訂單中至少乙個座位與觀眾要求不同,則半價。現求怎樣處理訂單,才能使總收入最高。輸入為套票裡座位數量,訂單數以及每個訂單對應的座位號 ...