一个小面试题?整数数组求和问题
随便给一个整数数组,判断前k-1个数之和与后面余下的数之和是否相等(k未知!)。相等就返回k值索引,否则返回-1。
例如:给定数组{1,2,3,4,6,4}。其中m=6,前k-1个数之和为10=1+2+3+4.后k...m个数之和为4+6=10.
即1+2+3+4=6+4=10,返回索引号k.
这个问题怎么解?求教算法高手!
[解决办法]
int half_sum_pos(int *a,int n)
{
int i,sum,halfsum;
sum=halfsum=0;
for(i=0;i<n;i++)
sum+=a[i];
for(i=0;i<n;i++)
{
halfsum+=a[i];
if(halfsum==sum/2)return i;
}
return -1;
}