搜索60分WA求助
查看原帖
搜索60分WA求助
432183
JoeBiden2020楼主2021/8/24 10:38
#include<bits/stdc++.h>
using namespace std;
const int maxn=30;
int v[maxn],w[maxn],n,m,ans=-0x7ffffff;
void dfs(int cur,int curans,int l){
	if(cur==m){
		if(l>=v[m]){
			curans+=v[m]*w[m];
			l-=v[m];
		}
		ans=max(ans,curans);
		return;
	}
	if(cur>m)return;
	if(l<v[cur]){
		ans=max(ans,curans);
		return;
	}
	dfs(cur+1,curans+v[cur]*w[cur],l-v[cur]);//选
	dfs(cur+1,curans,l);//不选
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>v[i]>>w[i];
	}
	dfs(1,0,n);
	cout<<ans;
	return 0;
}
2021/8/24 10:38
加载中...