dp
zzxdddd
这个作者很懒,什么都没留下…
展开
-
dp,洛谷p2437 蜜蜂路线
从m到n,都可以转换为从1到n-m+1,f(i) 表示从1到i的走法f(i)=f(i-1)+f(i-2);#include<iostream>#include<cstring>#include<cstdio>using namespace std;struct bign{ int d[3000]; int len; bign(){ memset(d, 0, sizeof(d)); len = 0; } bign operator .原创 2020-07-26 13:03:43 · 256 阅读 · 0 评论 -
dp,洛谷p1028 数的计算
#include<iostream>using namespace std;long long dp[1005] = { 0 };int main(){ int n; cin >> n; dp[0] = 1; dp[1] = 1; dp[2] = 2; //这是找规律看出来的 for (int i = 3; i <= n; i++){ dp[i] = dp[i - 2] + dp[i / 2]; } cout << dp[n];.原创 2020-07-26 12:38:53 · 169 阅读 · 0 评论 -
dp,洛谷p1044,栈
思路:状态: dp(i,j)表示进栈了i个,出栈了j个,显然,i>=jdp(i-1,j) 再进一个栈 就是dp(i,j) ,dp(i,j-1)再出一个栈就是dp(i,j)故dp(i,j)=dp(i-1,j)+dp(i,j-1);边界条件:dp(i,0) 进栈i个,出栈0个,情况只有一种#include<iostream>using namespace std;typedef long long ll;/*状态: dp(i,j)表示进栈了i个,出栈了j个,显然,i&.原创 2020-07-26 12:31:10 · 187 阅读 · 0 评论 -
dp,洛谷p1010
#include<iostream>#include<string>using namespace std;string f(int n){ string str = "", str1; if (n == 0) return "0"; //2的0次方 , if (n == 2) return "2"; //2的2次方 while (n > 0){ //吧n拆解成2的幂次方 int m = 1,k=0; while (m<=n) /.原创 2020-07-26 12:23:38 · 115 阅读 · 0 评论 -
dp,洛谷p1002过河卒
思路:f(i,j)表示从起点,走到(i,j)的走法f(i,j)可以从f(i-1,j),或者f(i,j-1)走来,马能到的位置不能走f(i,j)=f(i-1,j)+f(i,j-1);边界f(0,0)=1; 为了-1,-2越界,吧0,0移到2,2,小于0的都是0#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct pos{ int x; int.原创 2020-07-26 12:13:10 · 106 阅读 · 0 评论 -
dp,洛谷p1255 数楼梯
思路:f(i)代表走到第i阶 有多少种走法f(i)=f(i-1)+f(i-2) 走到第i阶,可以从i-2阶,走来,也可以从i-1阶走来#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;struct bign{ int d[5010]; int len; bign(){ len = 0; mems.原创 2020-07-26 12:05:57 · 158 阅读 · 0 评论 -
dp,洛谷p1164,小A点菜
思路:f(i,k)表示前i个数字,花完k元的方法的种数f(i,k)=f(i-1,k-a[i])+f(i-1,k) //点第i道菜或者不点第i道菜#include<iostream>#include<cstdio>using namespace std;int dp[110][10000] = {0};int N, M;int a[110];//记忆化递归int f(int i, int k){ //i<0或k<0 if (i < .原创 2020-07-26 11:58:39 · 157 阅读 · 0 评论