zoukankan      html  css  js  c++  java
  • 算法不归路之最大子序列(C++版)

    题目摘自《算法导论(第三版)》

      题目:给定一串整形序列,求出此序列的最大子序列。

      分析:此题可以采用暴力求解法,如何暴力求解呢?从下标0到数组长度剪1选取两个数,然后求解其间的所有值。也就是Cn2中组合。暴力代码不再贴出来。

      经过分析此题可以用分治递归的方式。具体代码如下:

    #include<iostream>
    using namespace std;
    const int N = -1024;
    int findMaxCrossingSubarray(int arr[], int low, int mid, int high){
        int leftSum = N, rightSum = N, sum = 0;
    
        for(int i = mid; i != low - 1; --i){
            sum = sum + arr[i];
            if(leftSum < sum){
                leftSum = sum;
            }
        }
        sum = 0;
        for(int  i = mid + 1; i != high + 1; ++i){
            sum = sum + arr[i];
            if(rightSum < sum){
                rightSum = sum;
            }
        }
        return (leftSum + rightSum);
    }
    
    int findMaxSubarray(int arr[], int low, int high){
        int left_sum, right_sum, cross_sum;
        if(low == high){
            return arr[low];
        }
        else{
            int mid = (low + high)/2;
            left_sum = findMaxSubarray(arr, low, mid);
            right_sum = findMaxSubarray(arr, mid+1, high);
            cross_sum = findMaxCrossingSubarray(arr,low,mid, high);
            if(left_sum >= right_sum && left_sum >= cross_sum)
            return left_sum;
            else if(right_sum >= left_sum && right_sum >= cross_sum)
                return right_sum;
            else
                return cross_sum;
        }
    }
    
    int main(){
        int a[16] = {13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7};
        cout<<findMaxSubarray(a, 0, 15)<<endl;
        return 0;
    }
    

                                                                                         联系请发此邮箱:18829213810@126.com

  • 相关阅读:
    mongoDB--1 概念
    PythonWeb-Django框架学习-Demo2-创建你的小WEB应用
    PythonWeb-Django框架学习-Demo1-快速搭建项目
    Python--Demo18--异步IO之协程
    Python--Demo17--WEB应用程序之模板和MVC
    Python--Demo16--WEB应用程序之框架的好处
    Python--Demo15--WEB应用程序WGSI接口
    快速了解HTTP协议
    Python--Demo14--正则表达式
    Python--Demo13--高级特性匿名函数、推导式、迭代器、生成器
  • 原文地址:https://www.cnblogs.com/zhaoyansheng/p/4892757.html
Copyright © 2011-2022 走看看