求助 萌新不会背包,用dfs直接写超时,20fen qaq……
查看原帖
求助 萌新不会背包,用dfs直接写超时,20fen qaq……
610147
RePon楼主2022/3/12 10:23
#include <iostream>
#include <cstdio>
using namespace std;

const int N=105;
int a[N][5];
int T,M;
int ans=999999;
int dp[N];
int m=1; 
void dfs(int t,int v,int i)
{
	if(i>M)
	{
		dp[m++]=v;
		return;
	}
	
	if(t+a[i][1]<=T)
	{
		dfs(t+a[i][1],v+a[i][2],i+1);
	}
	
	dfs(t,v,i+1);
	
}


int main()
{
	cin>>T>>M;
	for(int i=1;i<=M;i++)
	{
		cin>>a[i][1]>>a[i][2];
	}
	dfs(0,0,1);
	int odd;
	odd=dp[1];
	for(int i=2;i<=m;i++)
	{
		if(dp[i]>odd)
		{
			odd=dp[i];
		}
	}
	cout<<odd<<endl;
	return 0;
 } 

2022/3/12 10:23
加载中...