洛谷p2392

分析:

本题可以用动态规划dp做,但是因为数据量小,我们这里使用dfs进行穷举。

基本思路就是递归加回溯来穷举。

我们有四组数据,我们只要能处理一组,剩下的都是照样处理就行了。

我们穷举的内容:

因为是尽快完事,还能一次做两个。

我们可以穷举出怎么样分可以使两组数据的差最小。

然后左右脑中大的那个值就是答案;

也就是说我们要求分两组数据,两数数据和的差尽量小的情况下他们中大的数据要最小。

这样就是最快的了。

用一个left和right来分别纪录左右脑耗费的时间。

#include<stdio.h>
int s[4];
int l,r;
int min;
int data[100][100];
void dfs(int x,int y){
	//printf("%d %d\n",l,r);
	if(x>=s[y]){min=(min<(l>r?l:r)?min:(l>r?l:r));return;}
	l+=data[y][x];
	dfs(x+1,y);
	l-=data[y][x];
	r+=data[y][x];
	dfs(x+1,y);
	r-=data[y][x];
}
main()
{
	int ans=0;
	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",data[i]+j);
		}
		l=r=0;
		min=9999999;
		dfs(0,i);
		ans+=min;
	}
	printf("%d",ans);
} 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值