无脑递归,但是全re
查看原帖
无脑递归,但是全re
1269314
LiChenyi05楼主2024/3/30 22:57
#include <bits/stdc++.h>
using namespace std;
int a,b,c,d;
int arr1[250];
int arr2[250];
int arr3[250];
int arr4[250];
int tim;
int arr[300];
bool cmp(int x,int y)
{
	return x>y;
}
int k;
//对第一种题目计算,所需最短时间
void recursion1(int step,int s1,int s2)
{
	if(step==a)
	{
		arr[k++]=max(s1,s2);
		return;		
	}
	recursion1(step+1,s1+arr1[step],s2);
	recursion1(step+1,s1,s2+arr1[step]);
}
//对第二种题目计算,所需最短时间
void recursion2(int step,int s1,int s2)
{
	if(step==b)
	{
		arr[k++]=max(s1,s2);
		return;		
	}
	recursion2(step+1,s1+arr2[step],s2);
	recursion2(step+1,s1,s2+arr2[step]);
}
//对第三种题目计算,所需最短时间
void recursion3(int step,int s1,int s2)
{
	if(step==c)
	{
		arr[k++]=max(s1,s2);
		return;		
	}
	recursion3(step+1,s1+arr3[step],s2);
	recursion3(step+1,s1,s2+arr3[step]);
}
//对第四种题目计算,所需最短时间
void recursion4(int step,int s1,int s2)
{
	if(step==d)
	{
		arr[k++]=max(s1,s2);
		return;		
	}
	recursion4(step+1,s1+arr4[step],s2);
	recursion4(step+1,s1,s2+arr4[step]);
}
int main()
{
	cin>>a>>b>>c>>d;
	for(int i=0;i<a;i++)
	{
		cin>>arr1[i];
	}
	for(int i=0;i<b;i++)
	{
		cin>>arr2[i];
	}
	for(int i=0;i<c;i++)
	{
		cin>>arr3[i];
	}
	for(int i=0;i<d;i++)
	{
		cin>>arr4[i];
	}
	recursion1(0,0,0);
	sort(arr,arr+a);
	tim+=arr[0];
  
	k=0;
	memset(arr,0,sizeof(arr));
	recursion2(0,0,0);
	sort(arr,arr+b);
	tim+=arr[0];
  
	k=0;
	memset(arr,0,sizeof(arr));
	recursion3(0,0,0);
	sort(arr,arr+c);
	tim+=arr[0];
  
	k=0;
	memset(arr,0,sizeof(arr));
	recursion4(0,0,0);
	sort(arr,arr+d);
	tim+=arr[0];
  
	cout<<tim;
	return 0;
}

案例能过,但是全re,为啥子啊

2024/3/30 22:57
加载中...