自己试了几个例子过了,不知道哪错了
查看原帖
自己试了几个例子过了,不知道哪错了
924926
RTX978楼主2023/4/21 22:21
#include<algorithm>
using namespace std;
int s1,s2,s3,s4;
int a[22],b[22],c[22],d[22];
int ans1,ans2,ans3,ans4;
void dfs4(int k,int t)
{
	if(k>s4) return; 
	t=t-d[k];
	//cout<<t<<"  k"<<k<<endl;
	if(t<0)
	{
		t=-t;
		ans4=ans4+t;
	}
	
	dfs4(k+1,t);
	return ;
}
void dfs1(int k,int t)
{
	if(k>s1) return; 
	t=t-a[k];
	//cout<<t<<"  k"<<k<<endl;
	if(t<0)
	{
		t=-t;
		ans1=ans1+t;
	}
	
	dfs1(k+1,t);
	return ;
}
void dfs2(int k,int t)
{
	if(k>s2) return; 
	t=t-b[k];
	//cout<<t<<"  k"<<k<<endl;
	if(t<0)
	{
		t=-t;
		ans2=ans2+t;
	}

	dfs2(k+1,t);
	return ;
}
void dfs3(int k,int t)
{
	if(k>s3) return; 
	t=t-c[k];
	//cout<<t<<"  k"<<k<<endl;
	if(t<0)
	{
		t=-t;
		ans3=ans3+t;
	}
	
	dfs3(k+1,t);
	return ;
}
bool cmp(int a,int b)
{
	return a>b;
}
int main()
{
	cin>>s1>>s2>>s3>>s4;
	for(int i=1;i<=s1;i++) cin>>a[i];
	for(int i=1;i<=s2;i++) cin>>b[i];
	for(int i=1;i<=s3;i++) cin>>c[i];
	for(int i=1;i<=s4;i++) cin>>d[i];
	sort(a+1,a+1+s1,cmp);
	sort(b+1,b+1+s2,cmp);
	sort(c+1,c+1+s3,cmp);
	sort(d+1,d+1+s4,cmp);
	dfs1(1,0);
	dfs2(1,0);
	dfs3(1,0);
	dfs4(1,0);
	cout<<ans1+ans2+ans3+ans4<<endl;
/*	cout<<ans2<<endl;
	cout<<ans3<<endl;
  cout<<ans4<<endl;*/
}```
k是第几个元素,t传给下一个。
2023/4/21 22:21
加载中...