编程_算法题
芃仔
永远年轻,永远热泪盈眶
展开
-
【青蛙跳台阶——动态规划(进阶)】
public static int jumpFloorII(int target) { if (target <= 2){ return target; } int[] dp = new int[target]; dp[0] = 1; for (int i = 1; i < target; i++) { dp[i] = 2 * dp[i-1]; ...原创 2022-04-25 20:20:26 · 569 阅读 · 3 评论 -
【水牛小张换空瓶套娃问题】
思路分析:小张初始含有的空瓶子为N,喝了M(M初始值为0)瓶汽水。次吃将N和M传入方法中,递归的进行处理,每次传入之后,计算小张此次可以兑换喝多少瓶,兑换完还剩多少瓶,对sum进行相加,然后对此次兑换喝完后的瓶子和兑换完剩余的瓶子进行相加得again,此时的again如果大于3,意味着不用+1也仍然可以兑换一瓶,故不需要借,如果小于3,就需要考虑借空瓶,那么借一个还是借两个呢?此时最重要的是要考虑到借两个之后,假设刚好等于3,也仍然只能得到一个空瓶,仍然不够还,故只能考虑借一个空瓶。传入下次递归,在这...原创 2022-04-17 23:25:07 · 278 阅读 · 7 评论 -
【生兔子问题】
这道题的思路有多种,可以使用递归,也可以使用动态规划,在这里我们使用动态规划的思路为大家分析这道题:我们分析题意不难知道:每只兔子自出生的前两个月是不会生下新的兔子的,从第三个月开始每个月都会生下一只兔子。这是这道题解题的核心。第一个月兔子的数量为一只(记为A),第二个月兔子的数量为一只,第三个月这只兔子产下了一只兔子(记为B),此时具有两只兔子(A、B),第四个月时,为B出生的第一个月,故B不产子,A仍产子,此时产子记为C,共有三只兔子(A、B、C),第五个月时,B已经出生够两月,故此时B也开..原创 2022-04-15 19:57:25 · 1041 阅读 · 1 评论 -
【取手套问题】
解题核心思路:贪心算法对于这个题要考虑的核心问题是要保证其中一只手能够拿到全部颜色的手套,对此,我们做如下推断:要想保证一只手能够拿到全部颜色,我们需要将一双手的手套总数相加,减去数量最少的颜色,再加一,这样我们就能保证这只手所拿到的颜色涵盖了它原有的颜色。题目所述要保证“至少”的问题,因此,我们需要对左右手的数量进行判断,尽可能的从数量少的一只手里保障取到所有颜色,此时我们先不考虑为零的情况,对总数少的一方进行相加,求出保证全部颜色能拿到的最小结果。将上述的0先替换为2...原创 2022-04-13 14:31:25 · 569 阅读 · 2 评论