Click Here!
39d6f985556b84275138479b4f491ef13747906a00405b5fc016fd3dff5cffac5bac87888528f8ed469287281a8e8cc2bdab7b0876d7da4a8f6ada94a1679217f8917eb14593887fffce408f6aa828fe12f77c224131286c734118e2cf13bf60
Hey, password is required here.
无题
这是你的新仓库。
写点笔记,[[创建链接]],或者试一试导入器插件!
当你准备好了,就将该笔记文件删除,使这个仓库为你所用。
DP
前缀DP前缀和给定⼀个数组 a ,求出所有起点到当前位置的和
f[i] = f[i-1] + a
前缀最大值f[i] = max(f[i-1], a)
爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。有多少种不同的⽅法爬到楼顶呢?
状态:f[i]表示从起点到阶梯i有多少种方式
状态转移:f[i] = f[i - 1] + f[i - 2]
拓展:每次向上一步或者向下直接跳到楼底,问k次行动后,到达第x阶台阶的方案数(以行动次数找状态)
最大子数组和给一个整数数组nums,找出一个最有最大和的连续子数组(子数组最少包含一个元素),返回其最大值
状态:f[i]表示以当前节点i结尾的子数组的最大值
则f[i] = max(f[i] + ai)
以问题做状态、以i开头、以i结尾作为状态定义
过河卒类似二维dp或者双重前缀dp吧
滚动数组利用奇偶性,把i % 2这个数组当作当前阶段,1 - i % 2当作上一阶段
123456789101112vector<vector<int>> dp(2, vector<int>(m ...
回溯
==本质上是一种枚举==
定义从初始状态经过不确定的步数,到有条件的⽬标状态
每个状态有⼀种或多种⽅式到下⼀个状态(状态转移)
在过程中进⾏⼀定的判定,对⼀定不可能到⽬标状态的提前结束枚举(剪枝)
例一 :组合数给定两个整数n和k,返回范围[1, n]中所有可能的k个数的组合
123456789101112131415// c++ 11vector<vector<int>> ans;vector<int> comb;void traceback(){ if(comb.size() == k){ ans.push_back(comb); return; } int lower = comb.size() == 0 ? 1 : comb.back() + 1; for(int i = lower; i <= n;i ++){ comb.push_back(i); traceback(); comb.pop_bac ...
计算机组成原理(下)
计组再见
计算机组成原理(上)
计组初见
Python Class
Matplotlib学习
Python Class
Pandas学习
Python Class
Numpy学习