dp (n, m) = dp (n - 1, m - 1) + dp (n - 2, m - 1) + ... + dp (0, m - 1) (按定义, 一共 n 项)
= dp (n - 1, m - 1) + dp (n - 1, m) (把后面 n - 1 项合并)
#include<iostream> using namespace std; int arr[2013][2013]; void set() { int i,j; for (i=1;i<2013;i++) { arr[i][1]=i%1007; arr[i][0]=1; } for(i=2;i<2013;++i) for(j=1;j<2013;++j) arr[i][j]=(arr[i-1][j-1]+arr[i-1][j])%1007; } int main() { set(); int t,m,n; while(cin>>t) while(t-- && cin>>m>>n) cout<<arr[n][m]<<endl; return 0; }