一个简单的dp问题,可以看作是取一个大范围中的小范围,后面的题目如Wave也同样用到了这个思想
#include<stdio.h>
const int t=1e9 + 7;
__int64 a[108][108];
//int compare(int *a,int *b){
// int temp;
// if(*a<*b){
// temp=*b;
// *b=*a;
// *a=temp;
// }
//}
int main()
{int k;scanf("%d",&k);for(int i=0;i<=100;i++) a[i][0]=a[0][i]=1;for(int i=1;i<=100;i++){for(int j=1;j<=100;j++){(a[i][j] = a[i - 1][j] + a[i - 1][j - 1] + a[i][j - 1]) %= t;
// a[i][j]=(a[i-1][j]+a[i][j-1]+a[i-1][j-1])%t;}}while(k--){int n,m;scanf("%d %d",&n,&m);
// compare(&n,&m);printf("%I64d\n",a[n][m]%t);}return 0;
}