解析:实质上和Light oj 1145是一个题 可以参考http://blog.csdn.net/qq_26572969/article/details/50654796
[code]:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef long long LL;
int n,k,m;
LL dp[55],A[55];
int main(){
int i,j,cas,T;
scanf("%d",&cas);
for(T = 1;T <= cas;T++){
scanf("%d%d%d",&n,&k,&m);
memset(dp,0,sizeof(dp));
memset(A,0,sizeof(A));
dp[0] = 1;
int l,r;LL sum;
for(i = 1;i <= k;i++){
for(j = 0;j <= n;j++){
l = j+1,r = min(j+m+1,n+1);
A[l] += dp[j];
A[r] -= dp[j];
}
sum = 0;
for(j = 0;j <= n;j++){
sum += A[j];
dp[j] = sum;
A[j] = 0;
}
}
printf("Case %d: %lld\n",T,dp[n]);
}
return 0;
}