zoukankan      html  css  js  c++  java
  • 课堂作业

    求最大子数组之和

    1.程序

    #include <stdio.h>
    int Find_Max_Crossing_SubArray(int A[], int low, int mid, int high)
    {
       int left_sum = -0xff;
       int sum = 0;
       for (int i = mid; i >= low; i --)
       {
          sum += A[i];
          if (sum >left_sum)
          {
             left_sum = sum;
          }
       }
       int right_sum = -0xff;
       sum = 0;
       for (int j = mid + 1; j <= high; j ++)
       {
          sum += A[j];
          if (sum > right_sum)
          {
             right_sum = sum;
          }
       }
       return left_sum + right_sum;
    }
     
    int Find_Maximum_SubArray(int A[], int low, int high)
    {
       int left_sum, right_sum, cross_sum;
       if (high == low)
       {
          return A[low];
       }
       else
       {
          int mid = (low + high) / 2;
          left_sum = Find_Maximum_SubArray(A, low, mid);
          right_sum = Find_Maximum_SubArray(A, mid + 1, high);
          cross_sum = Find_Max_Crossing_SubArray(A, 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[100];
        int n;
        printf("请输入数组的个数:");
        scanf("%d",&n);
        printf("请输入数组的数:");
        for (int i = 0; i < n; i ++)
        {
           scanf("%d",&A[i]);
        }
        printf("最大子序列的和为:%d
    ",Find_Maximum_SubArray(A, 0, n - 1));
        return 0;
    }
    

    2.代码运行结果

     

  • 相关阅读:
    1767:字符合并
    成绩单
    floj 2264
    floj 2265 【lxs Contest #141】航海舰队
    CF932D Tree
    1745:分组
    1744:跳台阶
    Xamarin.Forms之跨平台性能
    Xamarin.Forms之部署和测试(性能)
    Xamarin.Forms数据绑定
  • 原文地址:https://www.cnblogs.com/dunyaowu/p/11690041.html
Copyright © 2011-2022 走看看