【已 AC,记忆化搜索】AC 但不解求助
查看原帖
【已 AC,记忆化搜索】AC 但不解求助
481330
sunyizhe还是MC大佬楼主2024/7/15 23:20

这是我原来的代码(0 pts):

//程序算法:DFS,记忆化
#include <bits/stdc++.h>
using namespace std;
const int N=110,MOD=1e6+7;

int n,m,a[N],f[N][N],ans;

int dfs(int dep,int lst)
{
	if(dep>m)
	{
		ans=(ans+1)%MOD;
		return 1;
	}
	
	if(f[dep][lst]!=-1)return f[dep][lst];
	
	f[dep][lst]=0;
	for(int i=lst+1;i<=n;i++)
		for(int j=0;j<=min(a[i],m-dep+1);j++)
		{
			f[dep][lst]=(f[dep][lst]+dfs(dep+j,i))%MOD;
		}
	
	return f[dep][lst];
}

void fast_read()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
}

int main()
{
	//freopen("input.in","r",stdin);
	//freopen("output.out","w",stdout);
	
	fast_read();
	
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	
	memset(f,-1,sizeof(f));
	cout<<dfs(1,0)<<endl;
	return 0;
}

我后来的代码把 dfs 里面的 int j=0 改成 int j=1,就变成了 100 pts,不懂为什么,求大佬指教!

2024/7/15 23:20
加载中...