数组中心下标是指该下标左边的值加合等于右边的值。
程序运行结果:
当数组为 -4, -1, -1, 6, 7
当数组为 -4, -1, 10, 6, 7
实现代码:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
/* 寻找数组中心下标 */
int search_sub(int arr[], int len)
{
int i, total = 0, sum = 0;
//先算出数组总和 total
for(i = 0; i < len; i++)
{
total += arr[i];
}
for(i = 0; i < len; i++)
{
//从左开始累加
sum += arr[i];
if(sum == total)//若相等,返回当前下标
{
return i;
}
//不相等则total减去当前下标对应值
total -= arr[i];
}
//无数组中心下标 返回-1
return -1;
}
int main()
{
int arr[] = {-4,-1,-1,6,7};
int len = sizeof(arr)/sizeof(arr[0]);
int sub = search_sub(arr, len);
if(sub < 0)//无中心下标
{
printf("该数组无中心下标!\n");
return -1;
}
printf("中心下标: %d\n",sub);
return 0;
}