dfs剪枝求解。
查看原帖
dfs剪枝求解。
704634
poor_OIer楼主2022/7/27 22:42

dfs做法不知道哪里放剪枝

#include<bits/stdc++.h>
using namespace std;
int t,m,ti[100005],value[100005],bestv=0;
void dfs(int step,int ctime,int cv)
{
	if(ctime<0)
		return;
	if(step>m)
	{
		bestv=max(bestv,cv);
		return;
	}
	dfs(step+1,ctime-ti[step],cv+value[step]);
	dfs(step+1,ctime,cv);
}
int main()
{
	cin>>t>>m;
	for(int i=1;i<=m;i++)
		cin>>ti[i]>>value[i];
	dfs(1,t,0);
	cout<<bestv;
	return 0;
}
2022/7/27 22:42
加载中...