你怎么知道我用了搜索+记忆化,我毛都薅秃了,也想不出该怎么做
查看原帖
你怎么知道我用了搜索+记忆化,我毛都薅秃了,也想不出该怎么做
1168588
FASTergood楼主2024/5/13 21:46

样例都没过的菜鸡,求看

#include<iostream>
#include<algorithm>
using namespace std;
int m, n, i, j;
int f[500][500],a[500],b[500];
int h[505];
int  dfs(int l,int sum,int k,int p)
{
	if (p > 1)return 0;
	if (k == n)return sum;
	if (l > m)return 0;
	if (k > n)return 0;
	if (f[l][k])return f[l][k];
	
	int ans = -1 * 0x3f3f3f;
	
	for (int i = 1;i <= n;i++)
	{
		ans = max(ans, dfs(l + b[i], sum + a[l],k+1,++h[i]));
		cout << l << " " << sum << endl;
	}
	f[l][k] = ans;
	//cout << ans << endl;
	return ans;

}
int main()
{
	cin >> m >> n;
	memset(f, 0, sizeof(f));
	memset(h, 0, sizeof(h));
	for (int i = 1;i <= m;i++)
		cin >> a[i];
	for (int j = 1;j <=n ;j++)
		cin >> b[j];
	cout<<dfs(1,a[1], 1,1);
}
2024/5/13 21:46
加载中...