求一个无序数组的子数组, 子数组的和最接近0

方法讨论:http://blog.kingsamchen.com/archives/649

typedef struct{
	int value;
	int index;
}info;

bool less_b (const info& info1, const info& info2){
	return info1.value < info2.value;
}
int * temp = new int [5];
	info* tempInfo = new info[6];
	temp[0] = 2;
	temp[1] = 6;
	temp[2] = -8;
	temp[3] = 13;
	temp[4] = -10;
	tempInfo[0].value = 0;
	tempInfo[0].index = 0;
	for (int i = 0; i<5 ;i++){
		tempInfo[i+1].value = temp[i]+tempInfo[i].value;
		tempInfo[i+1].index = i;
	}
	sort(tempInfo,tempInfo+5,less_b);
	int sum = INT_MAX;
	int start = 0;
	int end = 0;
	for (int i = 1; i < 6; i++){
		if (abs(tempInfo[i].value - tempInfo[i-1].value)<sum){
			sum = tempInfo[i].value - tempInfo[i-1].value;
			start = tempInfo[i-1].index;
			end = tempInfo[i].index;
		}
	}

注意sort的用法,以及运算符重载






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值