poj 2522 Partitioning for fun and profit
2012-08-20 09:01
549 查看
dp计数问题,
#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define M 500 #define N 100 int dp[M] [M];//和,位数,首向量 bool vis[M] [M]; int getdp(int m,int n,int x) { if(m<x)return 0; if(vis[m] [x])return dp[m] [x]; vis[m] [x]=true; if(n==1) { if(x==m)dp[m] [x]=1; else dp[m] [x]=0; } else { int ans=0; for(int i=x;i<=m-x;i++) ans+=getdp(m-x,n-1,i); dp[m] [x]=ans; } return dp[m] [x]; } void dfs(int m,int n,int k,int pre) { if(m<=0||k<=0||n<=0){return;} for(int i=pre;i<=m;i++) { int d=getdp(m,n,i); if(d<k){ k-=d; } else { printf("%d\n",i); dfs(m-i,n-1,k,i); // cout<<dp[m] [i]<<'!'<<endl; break; } } } int main() { int C; scanf("%d",&C); int m,n,k; while(C--) { scanf("%d%d%d",&m,&n,&k); dfs(m,n,k,1); } return 0; }
相关文章推荐
- UVA 10581 Partitioning for fun and profit
- uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)
- UVA 10581 - Partitioning for fun and profit(数论递推)
- UVA 10581-Partitioning for fun and profit(DP)
- uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)
- UVA 10581 - Partitioning for fun and profit(数论递推)
- Smashing the Stack for Fun and Profit by Aleph One
- Abuse of the Linux Kernel for Fun and Profit
- Reverse engineering NAND Flash for fun and profit
- Smashing The Stack For Fun And Profit
- 笔记学习Smashing The Stack for Fun and Profit example 3--怎样修改返回地址。
- 栈溢出 详解 Smashing The Stack For Fun And Profit
- 《Smashing The Stack For Fun And Profit》解读
- 溢出的经典文章:Smashing The Stack For Fun And Profit [En]
- [分布式系统学习]阅读笔记 Distributed systems for fun and profit 抽象 之二
- smashing the stack for fun and profit(译文)
- Git Hooks for Fun and Profit
- 溢出的经典文章:Smashing The Stack For Fun And Profit[译文]
- Objective-C的方法替换(Method Replacement for Fun and Profit)
- Hadoop, MapReduce and processing large Twitter datasets for fun and profit