方法讨论: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的用法,以及运算符重载