专题分类
鸡蛋灌饼想加辣条
扛住就是本事。
展开
-
dfs之最小高度树
题目描述:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 题目解析:①中序遍历一颗二叉搜索树的结...原创 2020-05-02 10:21:39 · 195 阅读 · 0 评论 -
DFS:火柴拼正方形
每日一题-DFS题目描述-473还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。示例 1:输入: [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根...原创 2020-05-01 12:25:45 · 307 阅读 · 0 评论 -
DP之最长公共子串
题意:给定两个字符串,求他们之间的最长的相同字符串的长度。公共子串和公共子序列是不一样的,公共子串要求连续,而公共子序列不要求连续。示例:输入:“helloworld”,“loop”输出:2解释:最长公共子串是lo解析:如图所示,假设结果对应一个数组dp[m][n],这个表格表示的就是A[i]和B[j]对应的字符是否相等。如果A[i] == B[j]那么dp[i][j] = dp[...原创 2020-04-14 18:55:24 · 379 阅读 · 0 评论 -
DP之剪绳子
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)示例1...原创 2019-12-07 19:55:01 · 209 阅读 · 0 评论 -
DP(4):最长序列型
题目:求一个序列中乘积最大的连续子序列的值.解析:①状态:f[i]=最后一个元素为a[i]的连续子序列的最大值.因为在乘积中一个负数乘以负数为大的正数,所以连续子序列的最小值也是当前状态g[i]=最后一个元素为a[i]的连续子序列的最小值.②初始条件:f[0]=a[0]g[0]=a[0]③转移方程:f[i] = max(max(f[i-1]*a[i],g[i-1]*a[i])...原创 2019-09-23 20:19:17 · 98 阅读 · 0 评论 -
DP(1):最值型
题目: 输入有的硬币种类,求凑出指定数的最少硬币数量.如:有2分,5分,7分的硬币,要凑出27元所需的最少硬币数量.视频解析参考solution:#include <iostream>#include <vector>#define MAX 27const int inf = (int) 1e9+7;using namespace std;int main...原创 2019-09-23 17:23:33 · 224 阅读 · 0 评论 -
DP(3):可行性(存在)型
题目:有n块石头分别在x轴的0,1,2…n-1位置.一只青蛙在石头0,想跳到石头n-1,如果青蛙在第i块石头上它最多可以向右跳距离ai,问青蛙是否能调到石头n-1上.eg:输入:a=[2,3,1,1,4]输出:true解析:一.确定状态①最后一步如果青蛙能跳到最后一块石头n-1,我们考虑它跳的最后一步这一步是从石头i跳过来的i<n-1需要满足两个条件:①青蛙可以调到石头...原创 2019-09-23 16:49:43 · 299 阅读 · 0 评论 -
DP(2):计数型动规
题目:给定m行n列的网格,有一个机器人从左上角(0,0)出发,每一步可以向下或者向右走一步,问有多少种不同的方式走到右下角.解析:一.确定状态:①最后一步:无论机器人用何种方式到达右下角,总有最后挪动的一步–向右或者向下.右下角坐标为(m-1,n-1),那么前一步机器人一定是在(m-2,n-1)或者(m-1,n-2)②子问题:机器人有x中方式从左上角走到(m-2,n-1)...原创 2019-09-23 16:11:15 · 241 阅读 · 0 评论 -
DFS(2):组合的结果
problem:排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。例如n=5,r=3,所有组合为:1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5input:一行两个自然数n、r(1<n<21,1≤r≤...原创 2019-09-17 15:03:40 · 164 阅读 · 0 评论 -
DFS(3):组合+判断素数
problem:已知 n 个整数b1,b2,…,bn以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。例如上例,只...原创 2019-09-17 16:27:51 · 151 阅读 · 0 评论 -
DFS(1):全排列
#include <iostream>#include <vector>using namespace std;int n;void dfs(vector<int>& nums,int level,vector<bool>& visited,vector<int>& tmp,vector<vector...原创 2019-09-08 15:45:24 · 191 阅读 · 0 评论