寻找数组的中心下标(中心值、C语言)

题目描述:给定一个数组,找出能使左右两边值之和相等的坐标。例如给定数组[1,2,3,4,5,1,2,3,4],则数组中心下标为5。给定数组[2,4,2,5,6,4,2,2,5],数组中心下标为5。给定数组[1],则中心下标为1(左右都为0)

思路:计算出数组总和sum。

1.中心下标的左边等于右边:为了便于编程和计算,在计算左边和右边时将中心下标本身的值也加进去。左右加同样的值,还是相等。

2.因为左边等于右边,则左边或者右边的两倍加上中心下标的值等于数组总和。注意这里左边或者右边是不带中心下标的值的,注意和上面的方法进行区分。

代码如下,cal1是方法1,cal2方法2:

#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 20

typedef struct{
   
    int *nums;
    int length;
    int max_length;    
}Nums,*PNums;

void init(PNums);
void input(PNums);
int cal1(PNums);
int cal2(PNums);

int main(void){
   
    Nums nums_array;
    PNums p = &nums_array;
    init(p);
    input(p)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值