
算法
牛码当驴
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
实现一个可以写加减乘除和括号的计算器
使用栈,当遇到加减乘除时,从栈顶取出一个数计算后圧入栈顶,如果有括号,则递归调用括号内的字符串,如果是数字,则取出该数字。 #include<iostream> #include<stack> using namespace std; int calculate(string s,int& i) { int num=0; char operation='+'; if(s[i]=='-') operation='-'; stack<int&原创 2021-11-19 22:00:55 · 742 阅读 · 1 评论 -
动态规划:完全背包问题
6.完全背包问题 有N件物品和一个容量为W的背包,第i件物品的重量是weight[i],价值是value[i],每件物品都有无限个,求解可以装下的最大价值总和。 区别:01背包中物品只能选一次,完全背包中每个物品可以选无数次 dp数组及下标含义: dp[i]表示用容量为i的背包可以装的最大价值总和。 递推公式: dp[j] = max(dp[j], dp[j-weight[i]] + value[i]) 遍历顺序: 外层循环,从前往后遍历物品;内层循环,从前往后遍历背包容量。 两层循环的顺序可以颠倒,但遍历原创 2021-11-10 20:53:41 · 186 阅读 · 0 评论 -
动态规划:背包问题
01背包问题 有N件物品和最多可以装W的背包,第i件物品质量为weight[i],价值为value[i]。每个物品只用一次,求怎么装才能获得最大价值。 二维dp数组: dp数组及下标含义:dp[i][j]表示从下标为[0-i]的物品里任意取放进容量为j的背包,价值总和的最大值。 递推公式:dp[i][j]有两种方式推出来 不放物品i:由dp[i-1][j]推出,即背包容量为j,只在[0-(i-1)]中取的最大价值总和。 放物品i:由dp[i-1][j-weight[i]]+value[i],即考虑不放物品原创 2021-11-10 20:52:53 · 94 阅读 · 0 评论 -
字符串相乘
使用C++实现两个数字字符串的大数相乘。原创 2021-11-09 22:24:34 · 4562 阅读 · 0 评论 -
有序数组 二分查找
704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1 示例: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 class Solution { public: int search(vector<int>& nums, int target) {原创 2021-11-06 16:53:46 · 221 阅读 · 0 评论