一、对贪心算法的理解
要做贪心选择,必须选出一种正确的贪心策略。这种策略必须是无后效性的,即,某个状态之前的情况不会对后面的状态造成影响,只对当前状态有影响。
二、汽车加油问题的贪心选择性质
经过加油站时先不加油,保留加油的机会,直接往前走。
当前的油量不足以去到下一个加油站,则返回最近的加油站加油。
代码:
#include <iostream> using namespace std; int n, k; int num[1005]; int main(){ scanf("%d %d", &n, &k); int temp = n, flag = 0; bool is = true ,t = false; for(int i = 0; i <= k; ++i){ scanf("%d", &num[i]); } for(int i = 0; i <= k; ++i){ if(temp-num[i] >= 0){ t = true; temp -= num[i]; } else{ if(t){ ++flag; temp = n; } if(temp-num[i] < 0){ is = false; break; } temp -= num[i]; } } if(is){ printf("%d", flag); } else { printf("No Solution!"); } return 0; }
三、在本章学习过程中遇到的问题及结对编程的情况
贪心的策略比较难想,但是一想出来基本上题目就做完了。队友似乎对贪心有很对读到的见解,总是能从很多不同的角度提出想法。