算法
花千树hss
这个作者很懒,什么都没留下…
展开
-
母牛生牛问题
题目描述 母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设不会死。求N年后,母牛的数量。 思路 列出前几年的母牛的数量,可以得到f(n)=f(n-1)+f(n-3) 代码 package Algorithm; public class Cow { public static int cowNumber1(int n){ if (n<1) return 0; if (n==1||n==2||n==3){ return原创 2020-05-15 09:40:54 · 325 阅读 · 0 评论 -
项目宣讲
题目描述 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数组,里面是一个个具体的项目),你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。返回这个最多的宣讲场次。 思路 选择最先结束的项目,去掉因为做这个项目而不能做的项目,再从剩下的项目中选择最先结束的项目。 代码 package Algorithm; import java.util.Arrays; import java.util.Comparator; public class原创 2020-05-15 08:58:40 · 189 阅读 · 0 评论 -
求项目的最大收益(贪心)
题目描述 输入: 参数1:正数数组costs 参数2:正数数组profits 参数3:正数k 参数4:正数m costs[i]表示i号项目的花费 profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润) k表示你不能并行、只能串行的最多做k个项目 m表示你初始的资金 说明:你每做完一个项目,马上获得的收益,可以支持你去做下一个项目。 输出: 你最后获得的最大钱数。 思路 维护一个大根堆和一个小根堆,大根堆按项目的收益排序,小根堆按项目的花费排序。 所有项目入小根堆; 从小根堆中弹出所有的当前可以原创 2020-05-14 17:01:14 · 254 阅读 · 0 评论 -
切金条(哈夫曼编码,贪心)
题目描述 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为10+20+30=60. 金条要分成10,20,30三个部分。 如果,先把长度60的金条分成10和50,花费60再把长度50的金条分成20和30,花费50 一共花费110铜板。但是如果,先把长度60的金条分成30和30,花费60再把长度30金条分成10和20,花费30一共花费9原创 2020-05-14 16:26:43 · 407 阅读 · 0 评论 -
最低的字典序
题目描述 给定一个字符串类型的数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典序。 思路 假设有两个字符串a,b,a和b拼接起来的字符串表示为a.b。如果a.b的字典序小于b.a,就把字符串a放在前面,否则把字符串b放在前面。每两个字符串之间都按照这个标准进行比较,以此标准排序后,再依次串起来的大写字符串就是结果。 代码 package Algorithm; import java.util.Arrays; import java.util.Comparator; p原创 2020-05-13 12:56:47 · 120 阅读 · 0 评论