多重集组合数
来源:互联网 发布:文学书籍推荐 知乎 编辑:程序博客网 时间:2024/05/22 11:35
/*有n种物品,第i种物品有ai个,不同类的物品可以互相区分但相同种类的无法区分,从这些物品中取出m个话,有多少种取法?,求取出方案模M 的余数。1<=n<=10001<=m<=10001<=ai<=10001<=M<=1000算法时间复杂度:O(nm);*/# include <stdio.h># include <iostream>using namespace std;# define MAX_N 1000+5int n,m;int a[MAX_N];int M;int dp[MAX_N+1][MAX_N+1];void solve(){ for(int i=0;i<=n;i++) dp[i][0]=1; for(int i=0;i<n;i++) for(int j=1;j<=m;j++) if(j-i-a[i]>=0) dp[i+1][j]=(dp[i+1][j-1]+dp[i][j]-dp[i][j-1-a[i]]+M)%M; else dp[i+1][j]=(dp[i+1][j-1]+dp[i][j])%M; printf("%d\n",dp[n][m]);}int main(){ while(cin>>n>>m) { for(int i=0;i<n;i++) cin>>a[i]; cin>>M; solve(); } return 0;}
0 0
- 多重集组合数
- 多重集组合数
- 多重集组合数
- 多重集组合数
- 多重集组合数
- 多重集组合数DP
- 多重集组合数 dp
- 多重集组合数-DP
- 多重集组合数问题
- 068_多重集组合数
- Ant Counting(多重集组合数)
- POJ3046-Ant Counting-多重集组合数
- 练习题 No.12 多重集组合数
- 动态规划 多重部分和 最长上升子序列 划分数 多重集组合数
- 编程算法 - 多重集组合数 代码(C)
- (经典)POJ-3046 多重集组合数
- POJ 3046 Ant Counting(dp----多重集组合数)
- POJ - 3046 Ant Counting(多重集组合数DP)
- Swift实现对象归档
- Hopscotch (poj 3050 dfs)
- 01背包之单数组 代码简单
- 黑马程序员——面向对象-异常
- 框架小知识
- 多重集组合数
- 整型和短整型,有符号和无符号
- 11 Steps Attackers Took to Crack Target
- java中Vector、ArraryList和LinkedList的区别
- 配置vc6+opencv1.0
- Android中Context详解 ---- 你所不知道的Context
- Ubuntu上搭建samba服务器
- PHP parse_ini_file 函数
- 移动游戏防作弊攻防战