返回题解分享
讨论 / 题解分享/ 帖子详情

李白打酒加强版(编程题) - 题解

#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 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!