zoukankan      html  css  js  c++  java
  • 算法学习笔记(一)求解最大子序列和的问题

      问题:给定一个有n(n >= 1)个整数的序列,求出其中最大连续子序列的和

      在这个问题中,我给出几种做法。

      方法一:暴力

        来两个循环,将所有的可能情况都考虑到,再求出最大值

        

     1 int maxValue(int data[], int length)
     2 {
     3     int i,j;
     4     int maxData = 0;
     5     for(i = 0; i < length; i ++)
     6     {
     7         int temp = data[i];
     8 
     9         for(j = i + 1; j < length; j ++)
    10         {
    11             temp += data[j];
    12             if(maxData < temp)
    13             {
    14 
    15                 maxData = temp;
    16             }
    17         }
    18     }
    19 
    20     return maxData;
    21 }

     

     

       方法二:动态规划

      老实说,由于没有学什么算法,动态规划是什么我也不懂,但是在大佬的指点下,这题动态规划好写点。

      

     1 int main()
     2 {
     3 
     4     int  arr[6] = {-2, 11, -4, 13, -5, -2};
     5 
     6     int arr2[6] = {0};
     7     int maxtemp = 0;
     8     int i;
     9     for(i = 0; i < 6; i ++)
    10     {
    11         maxtemp += arr[i];
    12         if(maxtemp < 0) //如果从左到右加过来和为负数,则重置为0,意为负数舍去,事实上一个树加上负数,只会越加越小。
    13         {
    14             maxtemp = 0;
    15         }else
    16         {
    17             arr2[i] = maxtemp;//将动态规划的一个小步骤结果保存起来,用于以后的求解最大值
    18         }
    19     }
    20 
    21     int max1 = arr2[0];
    22 
    23     for(i = 0; i < 6; i ++)  //求解最大值,最大值就是连续最大只序列和
    24     {
    25 
    26         if(max1 < arr2[i]){
    27             max1 = arr2[i];
    28         }
    29     }
    30 
    31     cout<<max1;
    32     return 0;
    33 }

     

     

     

     

  • 相关阅读:
    学习Linux二(创建、删除文件和文件夹命令)
    合理的需求
    两种事件触发的jquery导航菜单
    JS中this关键字
    Hibernate的session问题
    JQUERY图片特效
    学习Linux一(安装VMware和Ubuntu)
    A标签跳转问题
    WEBSERVICE简介
    IE下设置Cursor的一点记录
  • 原文地址:https://www.cnblogs.com/1998xujinren/p/10624732.html
Copyright © 2011-2022 走看看