• 算法导论最大子数组问题


     1 #include"stdio.h"
     2 int findMaxCrossingSubarray(int a[],int low,int high);
     3 int findMaximumSubarray(int a[],int low,int high);
     4 int maxLeft,maxRight;
     5 int main()
     6 {
     7     int a[100] = {0,13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};
     8     int maxSum;
     9     maxSum = findMaximumSubarray(a,1,16);
    10     printf("%d %d\n",maxLeft,maxRight);
    11     printf("%d\n",maxSum);
    12     return 0;
    13 }
    14 int findMaxCrossingSubarray(int a[],int low,int high)
    15 {
    16     int i,j;
    17     int mid;
    18     int leftSum = -9999,rightSum = -9999;
    19     int sum = 0;
    20 
    21     mid = (low + high) / 2;
    22     for(i = mid;i>=1;i--)
    23     {
    24         sum = sum + a[i];
    25         if(sum > leftSum)
    26         {
    27             leftSum = sum;
    28             maxLeft = i;
    29         }
    30     }
    31     sum = 0;
    32     for(j = mid +1;j<=high;j++)
    33     {
    34         sum = sum + a[j];
    35         if(sum > rightSum)
    36         {
    37             rightSum = sum;
    38             maxRight = j;
    39         }
    40     }
    41     return leftSum + rightSum;
    42 }
    43 int findMaximumSubarray(int a[],int low,int high)
    44 {
    45     int mid;
    46     int leftSum,crossSum,rightSum;
    47     if(high == low)
    48         return a[low];
    49     else
    50     {
    51         mid = (low + high) / 2;
    52         leftSum = findMaximumSubarray(a,low,mid);
    53         rightSum = findMaximumSubarray(a,mid + 1,high);
    54         crossSum = findMaxCrossingSubarray(a,low,high);
    55         if(leftSum >= rightSum && leftSum >= crossSum)
    56             return leftSum;
    57         else if(rightSum >= leftSum && rightSum >= crossSum)
    58             return rightSum;
    59         else
    60             return crossSum;
    61     }
    62 }
  • 相关阅读:
    第3次作业卷积神经网络
    SpringCloud Sidecar 整合.Net WebApi
    redefinition of class解决
    DP学习笔记
    NOIP2018 Day2毒瘤题目
    NOIP Day1总结
    关于DP
    这次的PION的总结
    NOIP模拟赛D2T1自己的解题思路
    ABAP Editor自动完成功能
  • 原文地址:https://www.cnblogs.com/guochangyu/p/7725286.html
Copyright © 2020-2023  润新知