标签:pre 相关 算法 贪心算法 tin ret bsp ati i++
贪心算法
基本要素:(1)最优子结构性质 (2)贪心选择性质
贪心算法通过一系列选择来得到问题的解,所做的每个选择都是当前状态下局部最好选择,即贪心选择,但是这种策略并不总能奏效。
在动态规划算法中,每步所做的选择往往依赖于相关子问题的解,因而只有在解出相关子问题后,才能做出选择; 而在贪心算法中,仅仅在当前状态下做出最好的选择,即局部最优解,再去解做这个选择后产生的相应子问题,不依赖于子问题。 故此,动态规划和贪心选择这两种,各有千秋,具体问题具体分析,恰得其所。
【汽车加油问题】贪心选择性质:
即续航量能跑的最大路段数,如果加完油后能跑完一定段数则继续跑下去,如果不行就要加油咯,具体代码及分析详见下文
1 int main(){
2 int km, station, i, run = 0, count = 0;
3 cin >> km >> station;
4 /*km表示加完油所能跑的最大公里数, station表示加油站数*/
5 int a[station + 1];
6 for(int i = 0; i < station + 1; i++){
7 cin >> a[i];
8 /*a[i]来存储每段路程的公里数*/
9 }
10 for(i = 0; i < station + 1; i++){
11 if(a[i] > km){
12 /*汽车耐力不够,到不了*/
13 cout << "No Solution!" << endl;
14 return 0;
15 }else{
16 run += a[i]; // run表示加完油后已将跑了所少公里
17 if(run <= km){ //继续跑
18 continue;
19 }else{ //继续不了,就要加油咯
20 count++;
21 i -= 1;
22 run = 0;
23 }
24 }
25 }
26 cout << count << endl;
Question: 一直想问为什么这个算法的名字叫做“贪心算法”。 结对编程情况嘞,拍照片中......先行告退了,咱图片见分晓,哈哈哈哈哈。
标签:pre 相关 算法 贪心算法 tin ret bsp ati i++
原文地址:https://www.cnblogs.com/ZAsmn/p/11904323.html