1.一些 贪心算法 的简单思维题:

1.渴婴问题:
    有一个非常渴的、聪明的小婴儿,她可能得到的东西包括一杯水、一桶牛奶、多罐不同种类的果汁、许多不同的装在瓶子或罐子中的苏打水,即婴儿可得到n种不同的饮料。根据以前关于这n种饮料的不同体验,此婴儿知道这其中某些饮料更合自己的胃口,因此,婴儿采取如下方法为每一种饮料赋予一个满意度值:饮用1盎司第i种饮料,对它作出相对评价,将一个数值si作为满意度赋予第i种饮料。
    通常,这个婴儿都会尽量饮用具有最大满意度值的饮料来最大限度地满足她解渴地需要,但是不幸地是:具有最大满意度值地饮料有时并没有足够地量来满足此婴儿解渴地需要。设ai是第i种饮料地总量,而此婴儿需要t盎司的饮料来解渴,那么,需要饮用n种不同的饮料各多少量才能满足婴儿解渴的需求呢?

解法:对si从大到小排序,每次减去相应的ai值(notice:最后一个不一定喝完),统计喝的数量.

2.装箱问题:
    有一艘大船准备用来装载货物。所有待装载货物都装在货箱中,且所有货箱的大小都一样,但货箱的重量都各不相同。设第i种货箱的重量为wi(1<=i<=n ),而货船的最大载重量为c,我们的目标是在货船上装入最多的货物。

解法:对wi从小到大排序,每次把wi最小的放在船上,统计放的个数.

3.找零钱问题:
    一个小孩买了价值少于1元的糖,并将1元钱交给了售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为50分、10分、5分、2分、1分的硬币。

解法:比如96分 -> 
96-50=46(<50); 50,1张
46-10=36(>=10),36-10=26(>=10),26-10=16(>=10),16-10=6(<10); 10,4张
6-5=1(<2); 5,1张
1-1=0; 1,1张
=>50分1张,10分4张,5分1张,2分0张,1分1张.

你可能感兴趣的:(贪心)