#include<bits/stdc++.h>
using namespace std;
int f[205][101][105];
int m,n;
int main(){
//ios::sync_with_stdio(false),cout.tie(0),cin.tie(0);
cin>>n>>m;
//初生两斗酒=1
f[0][0][2]=1;
//i个位置,看了j次花,有k斗酒的方案或者经过酒店
for(int i=0;i<=n+m;i++)
for(int j=0;j<m;j++)//注意是m-1,因为最后一次必须是花,且如果算上m+1这样还会多算
for(int k=0;k<=m;k++)if(f[i][j][k]!=0)
{
if(k>0)f[i+1][j+1][k-1]=(f[i+1][j+1][k-1]+f[i][j][k])%1000000007;
if(k<=50)f[i+1][j][k*2]=(f[i+1][j][k*2]+f[i][j][k])%1000000007;
}//注意题目中M<=100所以k不能大于50
cout<<f[n+m][m][0];return 0;}
0 回复
0 转发
1 喜欢
1 阅读



