练爆搜,求改!
查看原帖
练爆搜,求改!
1168588
FASTergood楼主2024/4/22 10:24

dfs 记忆化 //没找到问题,求改正

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int w[105],t[105][105];
int v[] = { 0,6,8,12,0 };
int m, n, i, j, d, x, y, k, ans1, ans2;
int b[1000];
int dfs(int x, int k,int n)
{
	if (k >= m)return n;
	if (x ==4)return n;
	int ans = 0x3f3f3f3f;
	if (t[x][k])return t[x][k];
	for (int i = v[x];i<= m;i+= v[x])ans = min(ans, dfs(x + 1, k + i, n + w[x] * i / v[x]));
	t[x][k] = ans;
	return ans;
}
int main()
{
	for (int i = 1;i <= 3;i++)
	{
		cin >> w[i];
	}
	cin >> m;
	cout <<dfs(1, 0, 0);
}
2024/4/22 10:24
加载中...