为啥这样改就错了
查看原帖
为啥这样改就错了
828573
CurryNo_1楼主2023/4/3 13:41
#include<iostream>
using namespace std;
int n,m,f[250][250][250]={},mod=1000000007;
int main()
{
	cin >> n >> m;
	//f[i][j][k],i表示当前走过的店和花的数量,j表示走过的店数,k表示当前壶里的数量
	f[0][0][2]=1; 
	for(int i=0;i<n+m;i++)//枚举走过花和店的总数 
	  for(int j=0;j<n;j++)//枚举走过的店的数量 
	    for(int k=0;k<=m;k++)//壶里酒的数量不能超过花的数量,枚举酒的数量 
		{
			if(f[i][j][k])
			{
				if(k<=50)  f[i+1][j+1][2*k]=(f[i+1][j+1][2*k]+f[i][j][k])%mod;//遇到店 
				if(k>0)  f[i+1][j][k-1]=(f[i+1][j][k-1]+f[i][j][k])%mod;//遇到花 
			}
		}
	cout << f[n+m][n][0] << endl;
	return 0;
}


和题解差不多,就是把枚举花改成枚举店

2023/4/3 13:41
加载中...