http://lx.lanqiao.cn/problem.page?gpid=T13
#include <bits/stdc++.h>
using namespace std;
int K,L;
long long dp[105][105];
//dp[i][j]长度为i,结尾为j的数字的个数
const long long mod=1000000007;
int main(){
cin >> K >> L;
long long sum;
for (int j=1;j<K;j++){ //注意,要从1开始而不是0开始,因为0不能作为首数字
dp[1][j]=1;
}
for (int i=2;i<=L;i++){
sum=0;
for (int j=0;j<K;j++){
sum=sum+dp[i-1][j]; // 注意这里别mod,否则会<dp[i-1][j]
}
for (int j=0;j<K;j++){
if (j==0){
dp[i][j]=(sum-dp[i-1][j+1])%mod;
}
else
if (j==K-1){
dp[i][j]=(sum-dp[i-1][j-1])%mod;
}
else{
dp[i][j]=(sum-dp[i-1][j-1]-dp[i-1][j+1])%mod;
}
}
}
sum=0;
for (int j=0;j<K;j++){
sum=(sum+dp[L][j])%mod;
}
cout << sum << endl;
}