求最大子串和的3种方法
来源:互联网 发布:更改windows桌面路径 编辑:程序博客网 时间:2024/04/26 12:16
一直都没来得及完成关于算法课上的实验任务,今天终于算是有时间把这个给写了。
#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>using namespace std;//蛮力法int maxSum(int a[],int n){ int maxsum=0; int sum=0; for(int i=0;i<n;i++){ sum=a[i]; for(int j=i+1;j<n;j++){ if(sum>=maxsum){ maxsum=sum; } sum+=a[j]; } } return maxsum;}//分治法int maxSum1(int a[],int left,int right){ int sum=0; if(left==right){ if(a[left]>0) sum=a[left]; else sum=0; } else{ int center=(left+right)/2; int leftsum=maxSum1(a,left,center); int rightsum=maxSum1(a,center+1,right); int s1=0,lefts=0; for(int i=center;i>left;i--){ lefts+=a[i]; if(lefts>s1) s1=lefts; } int s2=0,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 Dpsum(int a[],int n){ int sum=0; int *b=(int *)malloc(n*sizeof(int)); b[0]=a[0]; for(int i=1;i<n;i++){ if(b[i-1]>0){ b[i]=b[i-1]+a[i]; } else b[i]=a[i]; } for(int j=0;j<n;j++){ if(b[j]>sum) sum=b[j]; } delete []b; return sum;}int main(){ int a[10000]; int n; printf("要输入的序列的个数:"); scanf("%d",&n); printf("要输入的一系列数为:"); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } int ans1=maxSum(a,n); int ans2=maxSum1(a,0,n); int ans3=Dpsum(a,n); printf("最大的子串和为:%d\n",ans1); printf("最大的子串和为:%d\n",ans2); printf("最大的子串和为:%d\n",ans3); return 0;}
- 求最大子串和的3种方法
- 三种方法求最大连续子数组的和
- 三种方法求最大连续子数组的和
- 三种方法求连续子数组的最大和
- 求最大子序列和的四种方法
- 求子数组和值最大的两种方法
- 三种方法求连续子数组的最大和
- 求数组的最大子串和
- 3、求子数组的最大和
- 3:求子数组的最大和
- 3求子数组的最大和
- 求最大子串和
- 求最大子串和
- 4种方法求最大子序列和
- 求某一数组最大子数组和的三种方法
- 【算法拾遗】三种方法求连续子数组的最大和
- 求最大子段和的几种方法以及性能测试
- 求最大子序列和的四种经典方法及其算法时间复杂度分析
- c++builder通过指定的分隔符格式化一个日期字符串
- android_atomic_dec android_atomic_inc 实现
- iOS系统GCD学习(10):常见的错误
- IOS UIFont 字体大全
- db_files 不要设置的太大,否则影响内存的使用
- 求最大子串和的3种方法
- 指针和结构类型的关系
- 江苏2012工资榜揭晓 南京59375元全省最高
- 看看C++学习能否坚持下去
- Android startActivityForResult 和 setResult的使用
- IOS疯狂基础之 Block
- java中ThreadLocal类的使用
- ubuntu 下如何开启SSHD服务,同时使用putty远程连接到ubuntu
- c++builder统计一个字符串中数字的个数