
dp
*黎阳*
yang.
展开
-
最长公共子序列(递推)
问题描述:给定两个序列s1,s2,求二者的最长公共子序列长度例如:algorithmsalchemist输出:5即alhms1.设计状态:f[i][j]表示的是s1有i个字母,s2有j个字母,他们的最长公共子序列2.转移状态方程f[i][j]=0, i==0 || j==0;f[i][j]=f[i-1][j-1]+1; s1[i-1]==s1[j-1]f[i][j]=max(f[i-1][j],f[i][j-1]) s1[i-1]!=s1[j-1]..原创 2022-02-17 23:04:32 · 457 阅读 · 0 评论 -
硬币问题(递推)
现有若干枚硬币,硬币面值分别为1,5,11,要凑出价值为w,至少需要多少枚硬币样例输入:15样例输出:3提示:3*5=15我们可以按照递推从0个价值开始求,这样的话当求i价值需要多少硬币时,我们就可以比较一下f[i-11] , f[i-1], f[i-5] 的大小然后取最小值,通过这个递推关系一直求n#include<iostream>#include<cstring>using namespace std;int f[1010];in原创 2022-02-17 22:36:42 · 671 阅读 · 0 评论 -
数字金字塔(dfs||dp)
题目描述假设有如下所示的一个数字金字塔,现在,要求写一个程序来查找从顶点到底部任意处结束的路径,使路径经过的数字的和最大,并输出该路径的最大和。样例输入573 28 1 02 7 4 44 5 2 6 5样例输出30提示:该金字塔的和最大路径的和为7+3+8+7+5=30。方法一:记忆化搜索+DFS记忆化搜索本质上就是dp,只不过他是用递归去实现的;我们首先要确定他的设计状态,dfs(x,y)表示从该点出发到达终点最大路径和,那么dfs(1,1)就.原创 2022-02-17 22:21:12 · 501 阅读 · 0 评论 -
过河卒(DFS||递推)
方法一:用dfs直接搜索#include<iostream>using namespace std;int n,m,x1,y1,ans=0;int dir[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};//记录马可以走到的位置 int dr[2][2]={{1,0},{0,1}};//记录过河卒可以走的方向 int vis[30][30];//记录过河卒是否走过该位置 int ch...原创 2022-02-17 21:46:31 · 1304 阅读 · 2 评论 -
位数问题(递推)
在所有的n位数中,有多少个数中有偶数个数字3?由于结果很大,你只需要输出对这个答案对12345取余的值输入格式:输入一个数字n输出格式:输出有多少个数中有偶数个数字3输入样例:2输出样例:73数据范围:1<=n<=1000解析:记录一下i位数奇数个3和偶数个3分别有多少种可能,假设f[i][0]记录的是i位数有多少种偶数个3的数,f[i][1]记录的是i位数有多少种奇数个3的数,当要求i位数中有多少个数是偶数个3的数的时候,就可以将新的一位看作3或者不是3,这样递推到n.原创 2022-02-17 18:54:15 · 7953 阅读 · 0 评论 -
骨牌问题(递推)
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:Input输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0< n<=50)。Output对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。Sample Input132Sample Output132解析:对于某一个n,我们有两种选择,可以选择第一个骨牌竖着放.原创 2022-02-17 18:28:36 · 1151 阅读 · 3 评论