dfs 30分求助
查看原帖
dfs 30分求助
765461
zhangmingsheng3521楼主2023/6/24 21:50

代码如下:(前3个点AC,后7个点TLE)

#include"bits/stdc++.h" 
using namespace std;
//a数组为时间,b数组为价值 
int a[101],b[101],kinds,ans=-1;
void dfs(int time,int num,int aans)
{
	if (num==kinds)
	{
		if (a[num]>time)
		{
			if (aans>ans)
			{
				ans=aans;
			}
			return;
		}
		if (a[num]<=time)
		{
			if ((aans+b[num])>ans)
			{
				ans=aans+b[num];
			}
		    return;
		}
	}
	if (time<a[num])
	{
		dfs(time,(num+1),aans);
	}
	if (time>=a[num])
	{
		dfs((time-a[num]),(num+1),(aans+b[num]));
		dfs(time,(num+1),aans);
	}
}
int main()
{
	int tottime;
	scanf("%d%d",&tottime,&kinds);
	for (int i=1;i<=kinds;i++)
	{
		scanf("%d",&a[i]);
		scanf("%d",&b[i]);
	}
	dfs(tottime,1,0);
	printf("%d",ans);
	return 0;
}
2023/6/24 21:50
加载中...