题目
思路
DP,c(a b)可以看作是从a个苹果中选取b个苹果,
若首先选择选择一个苹果,则组合数可拆分为两种情况
包含该苹果或不包含该苹果,刚好涵盖了所有情况
代码
#include<iostream>
using namespace std;
const int N = 2010, mod = 1e9 + 7;
int a[N][N];
void init()
{
for(int i = 0; i < N; i ++)
for(int j = 0; j <= i; j ++)
if(!j) a[i][j] = 1;
else a[i][j] = (a[i - 1][j - 1] + a[i - 1][j]) % mod;
}
int main()
{
init();
int n;
cin >> n;
while(n --)
{
int x, y;
cin >> x >> y;
cout << a[x][y] << endl;
}
return 0;
}