DP
BOWWOB
社畜
展开
-
区间dp
密码脱落 题目链接 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<string> using namespace std; const int N=1010; string s; int f[N][N]; int solve(){ string ss; cin>>s; // s+=ss; .原创 2020-10-04 00:52:17 · 95 阅读 · 0 评论 -
二刷算法基础题DAY10
密码脱落 题目链接 (区间dp解) #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<string> using namespace std; const int N=1010; string s; int f[N][N]; int solve(){ string ss; cin>>s; .原创 2020-10-02 18:23:30 · 96 阅读 · 0 评论 -
二刷算法基础题DAY8
前缀和 题目链接 #include<iostream> using namespace std; const int N=100010; int a[N]; int s[N]; int n,m; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; s[i]=s[i-1]+a[i]; } while(m--){ .原创 2020-09-29 10:55:27 · 113 阅读 · 0 评论 -
二刷算法基础题DAY7
递归实现指数型枚举 题目链接 #include<iostream> using namespace std; const int N=20; int n; int f[N]; void dfs(int index){ if(index>n){ for(int i=1;i<=n;i++){ if(f[i]) cout<<i<<" "; } c.原创 2020-09-29 01:48:57 · 68 阅读 · 0 评论 -
二刷算法基础题DAY6
01背包问题 题目链接 #include <iostream> #include <algorithm> using namespace std; const int N=1000; int n,v; int z[N+10]; int val[N+10]; int f[N+10][N+10]; int main(){ cin>>n>>v; for(int i=1;i<=n;i++){ cin>>z[i.原创 2020-09-28 09:15:43 · 142 阅读 · 0 评论 -
二刷算法基础题DAY5
最长公共子序列 题目链接 > 注意dp数组的初始化问题 主要看减的 i-1 j-1的位置,若从0开始就会读到随机数据 #include <iostream> #include <string> using namespace std; const int N=1000+10; string ss1,ss2; int f[N][N]; int main(){ int n,m; cin>>n>>m; cin>.原创 2020-09-28 08:11:30 · 92 阅读 · 0 评论 -
二刷算法基础题DAY4
爬楼梯: 题目链接 class Solution { public: int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; int res=0; int a=1,b=2; for(int i=3;i<=n;i++){ res=a+b; a=b; b=res;原创 2020-09-24 02:15:49 · 90 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题3
区间dp问题: 1.合并石子 #include<iostream> #include<queue> using namespace std; const int N=300 +10; int a[N]; int s[N]; int f[N][N]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; s[i]=a[i];原创 2020-09-11 22:45:54 · 94 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题2
1.最长公共子序列 #include <iostream> #include <string> using namespace std; const int N=1000+10; string s1=" ",s2=" "; string ss1,ss2; int f[N][N]; int main(){ int n,m; cin>>n>>m; cin>>ss1>>ss2; s1+=ss1;原创 2020-09-10 04:37:35 · 172 阅读 · 0 评论 -
刷题记录----leetcode ,dp问题
dp解决: 1.leet-code 70. 爬楼梯 class Solution { public: int climbStairs(int n) { int f[n+10]; fill(f,f+n+10,0); f[1]=1; f[2]=2; for(int i=0;i<=n;i++){ if(i>2) f[i]=f[i-1]+f[i-2]; }原创 2020-09-09 04:15:58 · 177 阅读 · 0 评论 -
Leetcode 摘花生 简单DP
题目链接 /* 输入样例: 2 2 2 1 1 3 4 2 3 2 3 4 1 6 5 输出样例: 8 16 */ #include<iostream> #include <algorithm> using namespace std; int n; int row,col; int cnt; int res[100+10]; int arr[100+10 ][100+10 ]; void solve(){ int dp[100+10][100+10]; fo原创 2020-09-06 19:33:48 · 160 阅读 · 0 评论