dp
状态方程
①dp[i][j] 代表第i秒钟,体力为j的时候的方案数
② dp[i-1][j-1] 第i秒钟消耗体力划船
③ dp[i-1][j] 第i秒钟不消耗体力划船 (第i秒不划船的时候距离峡谷的距离大于0)
状态转移
① f[i][j]=(f[i][j]+f[i-1][j+1])
② f[i][j]=(f[i][j]+f[i-1][j]) (第i秒不划船的时候距离峡谷的距离大于0)
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter wt = new PrintWriter(new OutputStreamWriter(System.out));
static int d,t,m;
static int [][] f = new int[3300][1510];
static int mod = 1000000007;
public static void main(String [] args) throws Exception {
String [] str = bf.readLine().split(" ");
d=Integer.parseInt(str[0]);
t=Integer.parseInt(str[1]);
m=Integer.parseInt(str[2]);
f[0][m]=1;
for(int p=1;p<=t;p++)
{
for(int s=m;s>=0;s--)
{
f[p][s]=(f[p][s]+f[p-1][s+1])%mod;
if(d-(p-(m-s)*2)>0&&p>=(m-s)) f[p][s]=(f[p][s]+f[p-1][s])%mod;
}
}
wt.println(f[t][0]);
wt.flush();
}
}