完全背包如果用搜索做,dfs咋写,,,
查看原帖
完全背包如果用搜索做,dfs咋写,,,
250699
mot1ve楼主2020/8/23 20:29

这个是01背包的dfs,求修改

#include<bits/stdc++.h>
using namespace std;
int ans,t,m;
int v[110],w[110];
void dfs(int x,int sum,int res)//x表示当前在考虑哪一个,sum表示时间,res表示价值 
{
	if(sum>t)//剪枝 
	return ;
	if(x==m+1)//递归边界 
	{
		if(sum<=t&&res>ans)
		{
			ans=res;
		}
		return ;
	}
	dfs(x+1,sum+v[x],res+w[x]);//选
	dfs(x+1,sum,res);//不选 
}
int main()
{
	cin>>t>>m;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&v[i],&w[i]);
	}
	dfs(1,0,0);
	cout<<ans;
	return 0;
}
2020/8/23 20:29
加载中...