动态规划算法题
勤奋的懒羊羊o
东北林业大学 计算机科学与技术本科毕业
现东南大学网安硕士在读 欢迎交流
展开
-
LeetCode.746使用最小花费爬楼梯(动态规划)
在家天亮玩到天黑,为防止脑子锈化,做道水题安慰一下自己(自欺欺人)题解:public: int minCostClimbingStairs(vector<int>& cost) { int size=cost.size(); vector<int> dp(size+1, 0); for (int i = 2;i<=size;i++){ dp[i] = min(dp[i - 1] + cost[i - .原创 2021-08-06 21:27:05 · 121 阅读 · 1 评论 -
TSP旅行售货员问题(排列树回溯法)
问题描述代码#include <iostream>#include <cstdlib>using namespace std;#define N 100int n; //表示城市个数int a[N + 1][N + 1];int x[N];int bestx[N];int bestc = -1; //最右路径长度;int cc = 0; //当前路径的长度void Backtrcak(int i){ if (i > n) // 当到达原创 2021-05-25 16:38:44 · 826 阅读 · 0 评论 -
01背包问题(动态规划)
代码存一下,我个人觉得另外一种方式建立的动态规划方程比老师上课讲的那种要稍微容易理解一点,而且代码简单一点,先简单存一下,明天有时间写写两种方法的详解吧!这段代码前半部分的求最优值我前面有写过,这里就直接copy过来了#include<bits/stdc++.h>using namespace std;int dp[500][10000];//dp[i][j]表示前i个物品,背包容量是j的情况下的最大价值int v[10000];int w[10000];int main().原创 2021-04-15 00:26:29 · 117 阅读 · 2 评论 -
最长公共子序列(动态规划)
问题描述最长公共子序列和最长公共字符串的概念最优子结构设序列X={x1,x2,…,xm}和Y={y1,y2…,yn}的最长公共子序列为Z={z1,z2,…,zk},则① 若xm=yn,则zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列。② 若xm != yn且zk != xm,则Z是Xm-1和Y的最长公共子序列。③ 若下xm != yn且zk != yn,则Z是X和Yn-1的最长公共子序列。子问题的递归结构代码#include <iostream>us原创 2021-04-07 20:41:08 · 135 阅读 · 3 评论 -
矩阵连乘问题(动态规划)
题目描述:给定n个矩阵{A1,A2,…,An},其中,Ai与Ai+1是可乘的,(i=1,2 ,…,n-1)。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种加括号的方法,使得矩阵连乘的次数最小。算法:构造递归解:设m[i,j]为矩阵链Ai…Aj的最优解的计算花费代价代码一:#include <iostream>#include <cstdlib>using namespace std;int m[100][100];int s[100原创 2021-03-29 17:10:52 · 595 阅读 · 1 评论 -
最大子段和问题(动态规划)
#include <iostream>#include <cstdlib>using namespace std;int d=0; //d变量记录取 最大子段和 最后一个元素的位置int a[101],b[101],c[101]; //c[i]是A[1:i]中必须包含元素A[i]的向前连续延伸的最大子段和,a[i]记录元素, //b[i]记录i位置元素是否包含在最大子段和里 int MaxSum(int n) //原创 2021-03-28 23:12:20 · 3761 阅读 · 2 评论 -
01背包问题(经典动态规划)
解法一:二维数组#include<bits/stdc++.h>using namespace std;int dp[500][10000];//dp[i][j]表示前i个物品,背包容量是j的情况下的最大价值int v[10000];int w[10000];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>w[i]>>v[i]; for(int i.原创 2021-03-10 22:11:23 · 122 阅读 · 0 评论