分治法求最大子段和
来源:互联网 发布:网站刷流量软件 编辑:程序博客网 时间:2024/04/30 00:30
#include<iostream>using namespace std;int MaxSubSum(int a[],int left,int right){ int sum=0; if(left==right)sum=a[left]>0?a[left]:0; else{ int center=(left+right)/2; int leftsum=MaxSubSum(a,left,center); int rightsum=MaxSubSum(a,center+1,right); int s1=0; int lefts=0; for(int i=center;i>=left;i--){ lefts+=a[i]; if(lefts>s1)s1=lefts; } int s2=0; int rights=0; for(int i=center+1;i<=right;i++){ rights+=a[i]; if(rights>s2)s2=rights; } sum=s1+s2; if(sum<leftsum)sum=leftsum; if(sum<rightsum)sum=rightsum; } return sum;}int main(){ int n,a[100],m,maxsum; cout<<"请输入整数序列的元素个数n:"<<endl; cin>>n; cout<<"请输入序列中各元素的值a[i](一共"<<n<<"个)"<<endl; for(m=0;m<n;m++) cin>>a[m]; int b[100]; for(m=0;m<n;m++) b[m+1]=a[m]; maxsum=MaxSubSum(b,1,n); cout<<"整数序列的最大子段和是:"<<maxsum<<endl; system("pause");}
阅读全文
0 0
- 分治法求最大子段和
- 分治法求最大子段和
- 分治法求最大子序列和
- 求最大子段和
- 求最大子段和
- 最大子段和-分治&&动态规划
- 算法设计与分析--求最大子段和问题(蛮力法、分治法、动态规划法) C++实现
- 最大子段分治法解法
- 计算最大子段(分治法)
- 分治法求数组最大连续子序列的和
- 分治法求最大子序列和问题
- 分治法之求最大连续子序列和
- 【分治递归法】顺序表应用7:最大子段和之分治递归法
- 二分法求最大子段和问题
- 动态规划求最大子段和
- 动态规划求最大子段和
- 动态规划:求最大子段和
- 动态规划求最大子段和
- Kotlin之Anko异常处理(PluginManager$StartupAbortedException)
- 接口测试实践篇
- Spring 容器(Spring 的上下文)
- 批处理命令PUSHD和POPD
- java基本常识2 --- 关键字运算符
- 分治法求最大子段和
- 一个将 footer 保持在底部的最好方法
- jenkins持续集成服务器的安装配置和使用
- Linux添加新用户并设置权限
- CentOS7下安装MySQL5.7安装与配置(YUM)
- wex5 教程 之 图文讲解 登陆,注册,页面跳转
- C#中HashTable的用法
- sql语句的常用语法
- 关于在JS中获取被选中的值的集合传到后台并循环遍历出来