/* 贪心算法
问题:M磅猫粮,N个房间,第i个房间放着J[i]的老鼠粮食,需要F[i]磅猫粮给猫来看守,如果给予猫粮:F[i]*a%,则可获得J[i]*a%的老鼠粮食
输入:
第一行:非负整数 M N,接下来又N行,每一行含有1个非负整数 J[i] F[i]
最后一组测试用例为:-1 -1
所有的整数 <= 1000
对每一行输出:
打印出单独的一行,一个经过计算的实数(保留3位小数),老鼠能获得的最大的粮食(应选择最不值钱的鼠粮食)
输入:
5(磅猫粮) 3(3行)
7 2
4 3
5 2
20(磅猫粮) 3(3行)
25(J[1],第1个房间放着25磅老鼠粮食) 18(需要给猫18磅猫粮) 18/25=0.72
24 15 15/24=5/8=0.625(先买它) 15*(24/15)=24
15 10 10/15=2/3=0.66 (再买它)5*(15/10)=7.5 综合31.5
-1 -1(结束)
输出:
13.333
31.500
思路:最贪心思路,选择最不值钱的,能买到的鼠粮最多->鼠粮/猫粮最大的,通过 18元能买25斤食物,所以1斤需要18/25,后除以前,最大的即为价值最高的,1元能买25/18(越大越不值钱)
1元能买 24/15=1.6斤,选择前/后最大的先买
关键:
1 打印3位小数 printf("%.3d",x);
2 整型数做除法要乘以1.0,否则为整数,(1.0)*iMouseFood/
机试算法讲解: 第11题 贪心之猫鼠大战
最新推荐文章于 2023-07-21 13:48:55 发布