可以同时计算 2 道不同的题目,但是仅限于同一科
必须一科一科的复习,求能够完成复习的最短时间
这个可以用01背包问题,不过背包问题我还没学,就直接用的搜索
找问题找了好一会儿,结果只是错在x>s[i]
该成这之后交上去AC了
#include<iostream>
using namespace std;
int s[10],a[30];//1<=s1,s2,s3,s4<=20
int sum=0,l,r,mintime;
void dfs(int x,int i)
{
if(x==s[i])
{
mintime=min(max(l,r),mintime);
return;
}
if(l>=mintime||r>=mintime) return;
//左脑
l+=a[x];
dfs(x+1,i);
l-=a[x];
//右脑
r+=a[x];
dfs(x+1,i);
r-=a[x];
}
int main()
{
for(int i=0;i<4;i++) cin>>s[i];
for(int i=0;i<4;i++)
{
for(int j=0;j<s[i];j++)
{
cin>>a[j];
}
l=0,r=0;
mintime=1200;
dfs(0,i);
sum+=mintime;
}
cout<<sum;
return 0;
}