1. 程式人生 > >經典入門_貪心算法

經典入門_貪心算法

lin clas .net 最優 3.3 opera 題目 turn spa

貪心是一種總是選擇“當前最好選擇”,而不從整體上去把握的思想,往往這種“貪心”的策略能得到接近最優的結果,甚至某些情況下就是最優解。

例2.11 FatMouse‘Trade(1433)

題目大意如下:有n元錢,m種物品;每種物品有j磅,總價值f元,可以使用0到f的任意價格購買相應磅的物品,例如使用0.3f元,可以購買0.3j磅物品。要求輸出用m元錢最多能買到多少磅物品。

樣例輸入:
5 3
7 2
4 3
5 2
20 3
25 18
24 15
15 10
-1 -1
樣例輸出:
13.333
31.500
#include<stdio.h>
#include<algorithm>
using
namespace std; struct goods{ double j; double f; double s;//性價比 bool operator <(const goods &A)const{ return s>A.s; } }buf[1000]; int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF){ if(n==-1&&m==-1) break; for(int i=1;i<=m;i++){ scanf(
"%lf%lf",&buf[i].j,&buf[i].f); buf[i].s=buf[i].j/buf[i].f;//價格除以錢 } sort(buf+1,buf+1+m); double res=0;//累計重量 double quo=0;// for(int i=1;i<=m;i++){ if(n>=buf[i].f){ res+=buf[i].j; n-=buf[i].f; }
else{ quo=n/buf[i].f; res+=quo*buf[i].j; break; } } printf("%.3lf\n",res);//保留三位小數 } return 0; }

例2.12 今年暑假不AC (1434)

這道題的貪心策略並不是很明顯,但有了思路也很簡單,就懶得敲了,直接po一個鏈接:http://blog.csdn.net/lecholin/article/details/65979763

經典入門_貪心算法