首页 > 其他 > 详细

程序的演绎法

时间:2019-11-03 17:41:58      阅读:77      评论:0      收藏:0      [点我收藏+]

https://www.codewars.com/kata/54521e9ec8e60bc4de000d6c

技术分享图片

 

 

题意指:找到提供给你的数组中的能获得最大递增值的子序列

如题目中的数组,最大的序列为子序列{4,-1,2,1} 返回6

 

public class Max {
  //寻找数组中能组成最大和的子序列 (相邻)
  public static int sequence(int[] arr) {
    //如果数组大小为0 返回0
    if(arr.length == 0){
      return 0;
    }
    //声明临时最大值 与 最大返回值
    int maxTemp = 0;
    int maxRes = 0;
    //遍历数组 获取递加之和
    for(int i=0;i<arr.length;i++){
      //获取递加之和
      maxTemp += arr[i];
      //按照条件 递加之和小于0 则返回0
      if(maxTemp <0){
        maxTemp = 0;
      }
        //最大返回值等于 最大返回值现在是否大于或者等于临时最大递增之和呢?
        //如果判定true 则 返回maxRes最大返回值 , 否则返回临时最大递增值给maRes(用于return)
        maxRes = maxRes >= maxTemp? maxRes : maxTemp;
    }
    //返回结果
    return maxRes;
  }
}

 

最主要的判定在for循环中

根据数组演绎,每个数组中的值递加,如果小于0(为负数)则设定为0 在于最大返回值结果变量比较 小于它 则不计入

当计算结果中获取到的递加之和愈大 则maxRes 的变量值越大 再递加数组中后续的数值后,如果有较大结果可能则进行maxRes的改变 否则将不会变动

 

程序的演绎法

原文:https://www.cnblogs.com/ukzq/p/11788048.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!