抽象出来是排列组合题目
从n个数里面选择m个数、按递增方式放在每一层循环
从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;
}