poj 1664 DP
来源:互联网 发布:奕乐麻将 嘉兴玩网络 编辑:程序博客网 时间:2024/06/06 01:18
写了三种版本。
第一种:普通版
#include<cstdio>#include<cstring>int dfs(int M,int N){if(N==1||M==0)return 1;if(M>=N)return dfs(M-N,N)+dfs(M,N-1);elsereturn dfs(M,M);}int main(){int T,M,N;scanf("%d",&T);while(T--){scanf("%d%d",&M,&N); printf("%d\n",dfs(M,N));}}
第二种:记忆化搜索
#include<cstdio>#include<cstring>int dp[16][16];int dfs(int M,int N){if(dp[M][N]!=-1)return dp[M][N];if(N==1||M==0)return dp[M][N]=1;if(M>=N)return dp[M][N]=dfs(M-N,N)+dfs(M,N-1);elsereturn dp[M][N]=dfs(M,M);}int main(){int T,M,N;memset(dp,-1,sizeof(dp));scanf("%d",&T);while(T--){scanf("%d%d",&M,&N); printf("%d\n",dfs(M,N));}}
第三种:递推
#include<cstdio>#include<cstring>int dp[16][16];int main(){int T,n,m;scanf("%d",&T);memset(dp,0,sizeof(dp));for(int i=1;i<=10;i++){for(int j=1;j<=10;j++){if(i<j)dp[i][j]=dp[i][i];elseif(i==j)dp[i][j]=dp[i][j-1]+1;elsedp[i][j]=dp[i-j][j]+dp[i][j-1];}}while(T--){scanf("%d%d",&n,&m);printf("%d\n",dp[n][m]);}}
0 0
- poj 1664 DP
- 放苹果 - POJ 1664 dp
- POJ-1664-放苹果-dp
- POJ 1664 放苹果 DP
- poj dp
- 【dp】POJ
- 【dp】POJ
- [DP] POJ
- [DP] POJ
- [DP] POJ
- 【dp】POJ
- PKU POJ 1664 放苹果 DP
- DP或搜索——POJ 1664
- poj 动态规划DP - 1664 放苹果
- POJ 1664 放苹果 (基础组合dp)
- poj 1664 放苹果 dp+划分数
- POJ 3670 && POJ 3671 (dp)
- 【DP】 POJ 1080
- 系统防刷的一些基本方法
- 姿态解算
- Oil Deposits(dfs)HDU
- maven常用命令
- codeforces 687C (纸币dp)(状态不好想)
- poj 1664 DP
- 蓝桥杯-第七届蓝桥杯java B组决赛
- [LeetCode]350. Intersection of Two Arrays II(求两个数组交集 II)
- Arduino IED for EDP8266编写的相关函数
- Local Reference Overflow
- 一天搞懂深度学习
- PHP综合web开发(0)
- 12. Integer to Roman StringBuilder的运用以及StringBuffer和StringBuilder的比较
- 监控