与其说贪心算法是一种算法,不如说贪心算法是一种思想。
贪心嘛,人的本性,总是想要获得更多的利益,却不会放眼全局,所以贪心算法的思想
就是在眼前选择最优的方案。但是贪心无法顾及全局,所以在做题前,要先用数学确定
是否可以使用贪心。
详见 贪心算法_百度百科 (baidu.com)
接下来给大家看几道题的题解:
1962: 排队接水(经典):#include#include using namespace std; int n; double sum; int tot; struct a{ int t; int number; }x[1005]; bool cmp(a x,a b){ return x.t >n; for(int i=1;i<=n;i++){ cin>>x[i].t; x[i].number=i; } sort(x+1,x+n+1,cmp); for(int i=1;i<=n;i++){ cout< 2048: 金银岛2 #include1044: 【NOIP2002】均分纸牌:using namespace std; int w; int s; int ans=0; int n[100]; int v[100]; void dfs(int t=0,bool sel=0,int sumw=0,int sumc=0){ if(t>s){ return; } if(sel){ sumw+=n[t]; sumc+=v[t]; if(sumw>w){ return; } ans=max(ans,sumc); } dfs(t+1,0,sumw,sumc); dfs(t+1,1,sumw,sumc); } int main(){ int t; cin>>t; while(t--){ cin>>w>>s; for(int i=1;i<=s;i++){ cin>>n[i]>>v[i]; } ans=0; dfs(); cout< #includeusing namespace std; int sum=0; int cnt; int main(){ int n; int a[105]; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; sum+=a[i]; } int avg=sum/n; for(int i=1;i<=n;i++){ int d=a[i]-avg; if(d==0){ continue; }else{ a[i+1]+=d; cnt++; } } cout<



