贪心算法之钓鱼问题(python实现)
2018-11-19 20:11
134 查看
解题心得:
1、所有池在一条直线上,不走回头路
2、任意池都可以作为结束位置,减掉路途中消耗的时间,问题可化简
[code]#!/usr/bin/env python import sys def getMaxpool(pool): maxpool = index = 0 poolen = len(pool) for i in range(poolen): if(maxpool<pool[i]): maxpool = pool[i] index = i return index def stringTransform(string, n): list = string.split()[0:n] for i in range(n): list[i] = int(list[i]) return list if __name__ == "__main__": pool = [] n = input("请输入pool数: ") n = int(n) fishtime = int(input("请输入钓鱼的小时数: ")) if fishtime <= 0: sys.exit("输入错误!!时间必须大于0!!") else: times = fishtime * 60/5 pool = stringTransform(input("请输入每个池第一个五分钟钓鱼数(n个整数):"), n) if len(pool) < n: sys.exit("输入错误,输入数量小于池数!!") decreasefish = stringTransform(input("请输入湖泊再钓鱼每5分钟的鱼量减小值(n个整数):"), n) if len(decreasefish) < n: sys.exit("输入错误,输入数量小于池数!!") walktime = stringTransform(input("请输入相邻两个池间行走时间(n-1个整数): "), n-1) if len(walktime) < n-1: sys.exit("输入错误,输入数量小于池数减1!!") i = j = 0 maxfish = 0 for i in range(n): ##钓鱼结束位置 fish = 0 fishpools = pool[0:i+1] ##以i为终点的pool集合 t = times print(fishpools) for j in range(i): t -= walktime[j] ##去掉所有路途中的时间 print("time: %d" % t) while t > 0: poolindex = getMaxpool(fishpools) ##获取钓鱼最大的池 print("poolindex=%d" % poolindex) if fishpools[poolindex] == 0: break else: fish += fishpools[poolindex] print(fish) if fishpools[poolindex] <= decreasefish[poolindex]: fishpools[poolindex] = 0; else: fishpools[poolindex] -= decreasefish[poolindex] ##刷新可钓鱼数 t -= 1 if maxfish < fish: maxfish = fish print("最大钓鱼数为: %d" % maxfish)
阅读更多
相关文章推荐
- 算法基础之python实现贪心算法中的雷达安装问题和二分法中誊抄书籍问题
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- 【算法】贪心策略实现部分背包问题
- 【算法——Python实现】滑动窗口解决数组问题
- 《机器学习实战》——k-近邻算法Python实现问题记录
- 贪心算法和动态规划的思路及其Python实现
- 类别不平衡问题之SMOTE算法(Python imblearn极简实现)
- 《机器学习实战》——k-近邻算法Python实现问题记录(转载)
- 算法基础之python实现递归法中棋盘分割问题
- 0/1背包问题算法的python实现
- 一个java写的贪心算法实现删数问题
- 回溯算法——收费公路重建问题python实现
- 算法基础之python实现动态规划中数字三角形和最长上升子序列问题
- 算法基础之python实现枚举法中的讨厌的青蛙的问题
- 算法基础之python实现枚举法中的熄灯问题
- 经典算法问题:“this is a test” 逆序输出为“test a is this”.使用Python实现
- c语言来实现贪心算法之装箱问题
- 背包问题之贪心算法实现
- java代码实现贪心算法删除数字问题
- 用贪心算法解背包问题Java实现