最大子序列和的接口函数(3)

简介: 最大子序列和的接口函数(3)
int MaxSubsequenceSum(const int A[],int N)
{
  int thisSum=0,MaxSum=0,j;
  for(j=0;j<N;j++)
  {
  thisSum+=A[j];
  printf("thisSum %d..A[%d]=%d\n",thisSum,j,A[j]);    
  if(thisSum>MaxSum)
  {
    MaxSum=thisSum;
    printf("MaxSum:%d\n",MaxSum);
  }
  else if(thisSum<0)
    thisSum=0;  
  }
  return MaxSum;
}
int main()
{
  int number[]={1,-1,3,4};
  int maxsum=0;
  printf("start ....\n"); 
  maxsum=MaxSubsequenceSum(number,4);
  printf("maxsum:%d\n",maxsum); 
  exit(0);
}


运行得出结果

start ....
thisSum 1..A[0]=1
MaxSum:1
thisSum 0..A[1]=-1
thisSum 3..A[2]=3
MaxSum:3
thisSum 7..A[3]=4
MaxSum:7
maxsum:7


此算法的优点,它只对数据进行一次扫描,一旦A[j]被读入并处理,它就不再需要被记忆。在于它可以被顺序读入,在主存中不必存储数组任何部分,在任何时刻,算法都能对它已经读入的数据给出子序列问题的正确答案。

目录
相关文章
C4.
|
8月前
|
C语言
C语言函数的递归调用
C语言函数的递归调用
C4.
125 0
|
搜索推荐 程序员 编译器
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
神奇的库函数qsort【详解指向函数指针数组的指针、回调函数、模拟实现qsort函数】【C语言/指针/进阶/程序员内功修炼】【下】
80 0
|
8月前
|
C语言
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
55 1
|
8月前
|
C语言
C语言子函数的使用,子函数放前面和放后面的区别
C语言子函数的使用,子函数放前面和放后面的区别
|
8月前
|
算法 Java C语言
C语言函数的递归
C语言函数的递归
64 0
|
8月前
函数参数传双指针
函数参数传双指针
|
搜索推荐 C语言
C语言做题常用排序函数-qsort
C语言做题常用排序函数-qsort
|
C语言
妙用指针实现qsort
妙用指针实现qsort
82 0
|
算法 vr&ar 网络架构
汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】
汇编实验4(99乘法表,整数分解,素数环,迷宫问题)【栈传参,递归,寻址方式】
106 0