算法
文章平均质量分 92
算法练习
MegaBytes
一只刚刚入门的小猿
展开
-
OJ ACM模式常见输入输出代码(牛客练习)
点击跳转:牛客输入输出练习场1.输入不定行,每行2个整数输入描述:输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。输出描述:输出a+b的结果示例:输入:1 510 20输出:630#include<iostream>using namespace std;int main(){ int a,b; while(cin >> a >> b){原创 2021-03-27 12:32:15 · 3690 阅读 · 2 评论 -
动态规划之《高楼扔鸡蛋》问题详解 && LeetCode 887.鸡蛋掉落
描述这是LeetCode的第887题。题目如下:你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。你的目标是确切地知道 F 的值是多少。无原创 2020-11-22 22:38:04 · 4290 阅读 · 0 评论 -
动态规划之经典案例《0-1背包问题》详解
0-1背包问题描述有一个可装重量为w的背包和n件物品,每件物品都有重量和价值两个属性,且每件物品只有一件,只能选择装入或者不装,能装入的最大物品价值是多少?一、贪心算法分析看到求最值问题,一般是使用动态规划来解。为什么不使用贪心算法来解?因为贪心算法求的是局部最优解,而动态规划才能求得全局最优解。举个例子:现在有以下物品重量和价值数组W、V,背包最多装入9kg物品。W = [4,6,5,2]V = [7,8,5,3]使用贪心算法时,每一步要做的就是对于第i件物品,我取还是不取,且只能抉择原创 2020-11-08 19:09:33 · 4009 阅读 · 0 评论 -
从三道LeetCode例题总结递归套路,解决递归问题
递归解题三部曲何为递归?程序反复调用自身即是递归。我自己在刚开始解决递归问题的时候,总是会去纠结这一层函数做了什么,它调用自身后的下一层函数又做了什么…然后就会觉得实现一个递归解法十分复杂,根本就无从下手。相信很多初学者和我一样,这是一个思维误区,一定要走出来。既然递归是一个反复调用自身的过程,这就说明它每一级的功能都是一样的,因此我们只需要关注一级递归的解决过程即可。如上图所示,我们需要关心的主要是以下三点:整个递归的终止条件。一级递归需要做什么?应该返回给上一级的返回值是什么?因此原创 2020-10-31 23:05:31 · 405 阅读 · 1 评论 -
贪心算法理解及例题分析
贪心算法大多数算法基于以下4种算法:(1)贪心算法;(2)分治算法(递归);(3)动态规划(DP);(4)穷举。现在说贪心算法。一、贪心算法的主要思路:贪心算法主要思路是:(1)把求解的问题分成若干个子问题;(2)对每个子问题求解,得到子问题的局部最优解;(3)把子问题的局部最优解合成原来问题的一个解。从网上搜索贪心算法,基本都能搜到下面这段:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解原创 2020-09-03 13:29:33 · 1479 阅读 · 0 评论