zoukankan      html  css  js  c++  java
  • 整数组中取最大子数组

    寻找最大子数组

    1.设计思路;首先数组首尾连接问题 ,只需要将两个相同数组拼接即可。

                寻找最大子数组流程:定义变量 max  shou  wei   从数组下标0开始循环,最初遇到整数小于0,舍去,找第一个大于零的数字。

                                                                第一个正整数存储   于shou   从下一个开始循环,求和。

                                                               当和小于0,舍去。      循环一遍 求得和值最大值的下标。

    程序:

    public class MM {
          public static void main(String args[]){
              int a[]={1,-5,7,-3,-4,4,8,-9};
              int aa[]={1,-5,7,-3,-4,4,8,-9,1,-5,7,-3,-4,4,8,-9};
             
              am(a,aa);
          }
          
          static int [] am(int []a,int []aa){        
                  int shou=0; int wei=0;
                  int shou2=0;int wei2=shou2;
                  int max=0;int max2=aa[shou2];
                for(int i=0;i<a.length;i++){
                    shou2=i;wei2=i;max=0;
                  for(int j=i;j<a.length+i;j++){       
                      if(max+aa[wei2]<0){             
                          shou2=wei2+1;
                          wei2=wei2+1;
                          max=0;       
                      }
                      else{        
                          if(aa[wei2]+max>max2){              
                             shou=shou2;wei=wei2;
                             max2=aa[wei2]+max; 
                             max=max2;
                            }else{
                          max=aa[wei2]+max;} 
                          wei2++;
                       }
                  }
                }
                  if (max2 <= 0) { 
                      max = aa[0];
                      for (int i = 0; i < aa.length; i++) {
                          if (aa[i] >= max) {
                              max = aa[i];
                              shou=i;wei=i;
                          }
                      }
                  }
                
            
              System.out.println("第一次答案 下标开始"+shou+"下标结尾"+wei);
              
              
              if(wei>aa.length/2){wei=wei-aa.length/2;
              System.out.println("下标开始"+shou+"  下标结尾第二圈"+wei);}
              else{System.out.println("下标开始"+shou+"下标结尾"+wei);}
              return aa;
          }
        }

    运行结果 截图;

              

  • 相关阅读:
    web服务之NginX介绍
    LVS介绍以及工作模式案例
    sersync 实现实时数据同步
    Java高并发20-并发包中锁原理解析(二)
    Java高并发19-并发包中锁原理解析(一)
    从零开始学VUE之VueRouter(导航守卫)
    从零开始学VUE之VueRouter(传递参数)
    从零开始学VUE之VueRouter(嵌套路由)
    从零开始学VUE之VueRouter(路由懒加载)
    从零开始学VUE之VueRouter(动态路由)
  • 原文地址:https://www.cnblogs.com/du1269038969/p/6652811.html
Copyright © 2011-2022 走看看