dp
i_actor
一只学C++的菜鸡。
展开
-
牛客 - 字符串排列(dp练习)
题目: 给定一个字符串string A和其长度n,返回所有该字符串所包含字符的各种排列。要求输入字符串长度小于等于11且均为大写英文字符,排列中的字符串按字典序从大到小排序。(重复字符串不用合并) 解析: 感觉这道题不像是dp的,更像是回溯的。。 class Permutation { public: void permuDict(vector<string> &dict, string &A, int i, vector<int>mark, string l原创 2020-12-17 21:24:17 · 553 阅读 · 0 评论 -
牛客 - 魔术索引Ⅱ(dp练习)
题目描述: 已知一个数组A[0…n-1]和其大小n(不下降序列,元素值可能相同),判断是否存在A[i]=i,返回值为bool,要求时间复杂度小于o(n)。 解析: 同样要求时间复杂度,所以还是要用到二分求解。 class MagicIndex { public: void magic(vector<int> &A, int low, int high, bool &flag) { if(low <= high) {原创 2020-12-17 20:43:25 · 112 阅读 · 0 评论 -
牛客 - 魔术索引Ⅰ(dp练习)
题目描述: 已知数组A[0…n-1]和数组大小n(升序数组,元素值各不相同),若存在A[i]=i则称该数组有魔术索引,请判断该数组是否存在魔术索引,返回值为bool,要求复杂度优于o(n)。 解析: 题目要求复杂度优于O(n),所以不能直接采用遍历的方法,而二分正好可以满足这个要求。 代码如下: class MagicIndex { public: bool findMagicIndex(vector<int> A, int n) { // write code here原创 2020-12-17 20:33:34 · 133 阅读 · 0 评论 -
牛客 - 机器人走方格Ⅱ(dp练习)
题目描述: 给定一个int[][] map(C++ 中为vector >)网格图,若map[i][j]为1则该点不是障碍点,否则为障碍点。另外给定int x,int y,表示网格的大小。现有一个机器人要从网格左上角走到右下角,只能走格点且只能向右或向下走。请返回机器人从(0,0)走到(x - 1,y - 1)有多少种走法。请将结果Mod 1000000007以防止溢出,并保证x和y均小于等于50。 解析: 这道题和机器人走方格唯一的区别就是多了一个障碍,所以状态转移方程是没变的,判定一下是不是障碍就行原创 2020-12-17 20:22:47 · 355 阅读 · 0 评论 -
牛客 - 机器人走方格Ⅰ(dp练习)
题目描述: 给定两个正整数int x,int y,代表一个x乘y的网格,现有一个机器人要从网格左上角顶点走到右下角,每次只能走一步且只能向右或向下走,返回机器人有多少种走法。保证x+y小于等于12。 解析: 机器人只能从上放和左边过来,所以matrix[i][j] = matrix[i-1][j] + matrix[i][j-1]; 而在最上方和最左边的那些格子,只有一个方向过来,所以都只需要初始化为1. class Robot { public: int countWays(int x, int原创 2020-12-17 20:01:36 · 220 阅读 · 0 评论 -
牛客 - 上楼梯(dp练习)
题目描述: 给定一个正整数int n,从0开始加到n,每次可增加1、2或3,直到其大于等于n,请返回一个数,代表加到n的方案的个数。保证n小于等于100000,并为了防止溢出,请将结果Mod 1000000007。 解析: 这道题就是一个加强版的斐波拉契数列,只不过从前两个变成了前三个的总和。另一个可能存在的问题就是取余数的问题,不过小心一点其实也简单。 代码如下: class GoUpstairs { public: int countWays(int n) { // write原创 2020-12-17 19:46:27 · 1668 阅读 · 1 评论 -
牛客 - 最近公共祖先(dp练习)
题目描述: 将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。 解析:这道题其实不用dp,由于是满二叉树所以一定满足a/2 是a的双亲,b/2是b的双亲,所以代码就比较简单。 代码如下: class LCA { public: int getLCA(int a, int b) { // write code here while(a != b){原创 2020-12-17 19:43:09 · 199 阅读 · 1 评论