关于剪枝
查看原帖
关于剪枝
197498
Jaim楼主2020/10/29 22:33
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int kkk[4][61],l=0,r=0,ans=0,num=120000;
void dfs(int a,int n)
{
	if(n<0)
	{
		num=min(num,max(l,r));
		return ;
	}
	l+=kkk[a][n];
	dfs(a,n-1);
	l-=kkk[a][n];
	r+=kkk[a][n];
	dfs(a,n-1);
	r-=kkk[a][n];
}
int main()
{
	int s[4];
	for(int i=0;i<4;i++) scanf("%d",&s[i]);
	for(int i=0;i<4;i++)
	for(int j=0;j<s[i];j++) scanf("%d",&kkk[i][j]);
	for(int i=0;i<4;i++)
	{
		dfs(i,s[i]);
		ans+=num;
		l=0; r=0; num=120000;
	}
	printf("%d",ans);
	return 0;
} 

RT

2020/10/29 22:33
加载中...