`

等值首尾和问题

阅读更多

问题:假设有一个数组x[],有n个元素,并且每一个都大于零;称x[0]+x[1]+x[2]+...+x[i]为前置和,而x[j]+x[j+1]+...+x[n-1]为后置和。试编写一个程序,求出x[]中有多少组前置和后置和。

思路:设置两个索引变脸indexHead和indexTail,一个从前往后扫描,一个从后往前扫描。并且使用两个变量记录当前的前置和和后置和,并通过比较他们的值来决定移动哪个索引变量。直接看代码吧。

#include <stdio.h>
int countHeadTailNum(const int a[], int n) {
    int indexHead = 0,indexTail = n -1; 
    int sumHead = 0,sumTail = 0;
    int nums = 0;

    while(indexHead <= n - 1 && indexTail >= 0) {
        if(sumHead > sumTail) {
            sumTail += a[indexTail--];
        }   
        else if(sumHead < sumTail) {
            sumHead += a[indexHead++];
        }   
        else {
            nums++;
            sumHead += a[indexHead++];
            sumTail += a[indexTail--];
        }   
    }   
    return nums;
}
int main() {
    int a[] = {3,6,2,1,4,5,2};
    printf("The number of equal prefix sum and sufix sum is %d\n",countHeadTailNum(a,7));
    return 0;
}
 
1
1
分享到:
评论

相关推荐

    2009年安联杯安徽省青少年信息学奥林匹克竞赛试题

    这是一个关于数论和递归函数的问题。给定一个函数dsum(x),我们需要找出在一定范围内符合dsum(x)整除x的小行星带数量。解决这类问题通常需要深入理解递归关系并找到其内在规律。对于较大的数据范围,可能需要使用位...

    2010安徽省信息学竞赛试题(小学组)

    第一题【等值首尾和(add)】是一个基础的数学运算题目,要求学生实现一个程序,模拟老师的加法游戏。游戏规则是:从左到右和从右到左分别对一串数字进行累加操作,然后找出两次计算过程中相同的数值个数。输入包括两...

    5.3_力的平衡6[借鉴].pdf

    总的来说,力的平衡是理解和解决许多物理问题的基础,涉及力的合成、分解以及力的作用效果。掌握力的平衡原理对于解决实际问题,比如结构稳定性、机械设计以及物体运动分析等方面都有重要意义。

    电力系统分析作业——电网节点导纳矩阵的计算机形成.doc

    变量`u`迭代每个支路,`hnode`和`enode`分别代表支路的首尾节点,`z`和`b`表示支路的阻抗和导纳,`k`为变比。根据支路类型(线路或变压器),相应地更新对应的矩阵元素。 计算过程包括以下步骤: - 计算支路两端...

    HTMl 中marquee标签实现无缝滚动跑马灯效果

    9. `align`: 决定内容的对齐方式,包括`absbottom`、`absmiddle`、`baseline`、`bottom`、`left`、`middle`、`right`、`texttop`和`top`等值。 10. `face`: 用来设置滚动文本的字体,可以是任何有效的字体名称。 ...

    东软oracle在线期中考试一.docx

    4. **字符串函数**:`LPAD` 用于在字符串左侧填充字符以达到指定长度,`CONCAT` 合并两个或更多字符串,`SUBSTR` 截取字符串的一部分,`LOWER` 将字符串转换为小写,`UPPER` 转换为大写,`TRIM` 去除字符串首尾的...

    StringUtils(最新)

    7. **比较操作**:`StringUtils.equals(String str1, String str2)` 和 `StringUtils.equalsIgnoreCase(String str1, String str2)` 分别进行字符串的等值比较和忽略大小写的比较。 8. **首尾字符处理**:`...

    等效电路图的八种画法

    等效电路又称“等值电路”。在同样给定条件下,可代替另一电路且对外性能不变的电路。电机、变压器等电气设备的电磁过程可用其相应的等效电路来分析研究。 等效电路是将一个复杂的电路,通过电阻等效、电容等效,...

    python数组 python数组方法

    这种定义方式可以让我们可以直接确定数组中首尾元素的下标,也可以直接通过下标访问数组元素和操作数组中元素(增、删、改),这是 Python 数组比较其他语言数组方便的地方。 二、数组初始化 在处理数组时,往往...

    常用SQL查询经典汇总,查询优化总结

    - `BOF` 和 `EOF`:检查记录指针是否在数据表首尾 - `Delete`:删除当前记录 - `AddNew`:在数据表末尾添加新记录 - `Update`:更新当前记录 9. **查询优化** - 使用索引:为常用查询的字段创建索引以加速查询...

    GisTool_V4.8

    将没有闭合的线段首尾自动连接闭合。 82、线段换层拷贝。将某一线段原位置不动复制到另一层中。 83、线段局部重合。两条线段在局部没有重合的地方使其自动重合。 84、属性刷功能。点、线、区的属性都可以运用属性...

Global site tag (gtag.js) - Google Analytics