zoukankan      html  css  js  c++  java
  • 等值首尾和2012年12月27日

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

             我的思路:因为这个数组都是正数,那么,对于i越大,前置和也就越大;后置和是j越小,那么后置和越大。接下来就很简单了,当以x[i]为终点的前置和大于以x[j]为起点的后置和时,j需要减去1,同理可得小于的情况。代码如下:

     1 #include <stdio.h>
     2 
     3 int x[]={3,6,2,1,4,5,2};
     4 
     5 int main()
     6 {
     7     int index_pre,index_suf;    
     8     int sum_pre=0,sum_suf=0;
     9     int len_x=sizeof(x)/sizeof(int);
    10     int count=0;  
    11     for(index_pre=0,index_suf=len_x-1;index_pre<len_x && index_suf>-1;) 
    12     {
    13         if(sum_pre==sum_suf) 
    14         {
    15             count++; 
    16             sum_pre+=x[index_pre++];
    17             sum_suf+=x[index_suf--];
    18         }
    19         else if(sum_pre<sum_suf)
    20             sum_pre+=x[index_pre++];  
    21         else
    22             sum_suf+=x[index_suf--];
    23     }
    24     printf("result:%d\n",count);
    25     return 0;
    26 }

              如果你觉得我的文章对你有帮助,请推荐一下,非常感谢!

  • 相关阅读:
    二叉排序树 常用函数小结
    二叉树的应用:二叉排序树的删除
    剑指 Offer 32
    剑指 Offer 32
    剑指 Offer 68
    剑指 Offer 28. 对称的二叉树 做题小结
    正则表达式不要背
    剑指 Offer 55
    LeetCode226. 翻转二叉树 做题小结
    Tools | 编程IED/编译器
  • 原文地址:https://www.cnblogs.com/NeilHappy/p/2835981.html
Copyright © 2011-2022 走看看