hdu 1799 循环多少次(DP,排列组合Cn(m))

来源:互联网 发布:用友网络2017最新消息 编辑:程序博客网 时间:2024/04/30 08:05
抽象出来是排列组合题目
从n个数里面选择m个数、按递增方式放在每一层循环

Cn(m)=C(n-1)(m-1)+C(n-1)(m)

DP状态转移方程: dp[i][j]=dp[i-1][j]+dp[i-1][j-1]

#include<stdio.h>#include<string.h>int dp[2010][2010]={0};void init(){int i,j;for(i=1;i<=2000;i++){dp[i][0]=1;dp[i][1]=i%1007;}for(i=2;i<=2000;i++){for(j=1;j<=2000;j++){dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%1007;}}} int main(){int i,j,k,n,m,t;init();scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);printf("%d\n",dp[m][n]);}return 0;} 


0 0
原创粉丝点击