• 返回一个整数数组中的最大子数组


     1.

     1 package test1;
     2 
     3 
     4 
     5 import java.util.Scanner;
     6 
     7 public class FindMaxArry{public static int max(int ans, int i) {
     8     // TODO Auto-generated method stub
     9     
    10     int m;
    11     if(ans>i)
    12         m=ans;
    13     else
    14         m=i;
    15     return m;         
    16 }
    17 
    18     public static void main(String[] args) {
    19       
    20         int[] a = new int[100];
    21         int i,n;
    22          System.out.println("请输入数组元素个数");
    23          Scanner sc = new Scanner(System.in);
    24          n=sc.nextInt();
    25          System.out.println("请输入数组元素");
    26          for(i=1;i<=n;i++) 
    27             a[i] = sc.nextInt();
    28          
    29          for(i=2;i<=n;i++) {
    30              if(a[i]+a[i-1]>a[i])
    31                  a[i] = a[i]+a[i-1];
    32          }
    33          
    34          int ans=-10000;
    35          for(i=1;i<=n;i++)
    36              ans=max(ans,a[i]);
    37          System.out.println(ans);
    38     }
    39 
    40     
    41 }

    运行截图:

     2.环形数组,不要求时间复杂度,但是每个元素只能用一次。但是下面的这个方法有写小瑕疵,不能满足每个元素只能用一次的要求,目前还不知道怎么解决。

     1 package day01;
     2 
     3 import java.util.Scanner;
     4 
     5 public class FindMaxArray {
     6 
     7     public static void main(String[] args) {
     8         // TODO 自动生成的方法存根
     9         int length;//定义数组长度length
    10         int n;//定义变化后的数组的长度
    11         System.out.println("请输入数组元素个数");
    12         Scanner sc = new Scanner(System.in);
    13         length=sc.nextInt();
    14         n=2*length;
    15         
    16         int[] a = new int[n];
    17         System.out.println("请输入数组中的元素:");
    18        
    19         for(int i=0;i<length;i++)
    20         {
    21              a[i] = sc.nextInt();
    22         }
    23         int max=a[0];
    24         int sum=0;//定义求和后的元素
    25         for(int i=0;i<length;i++)
    26          {
    27            sum=0;
    28            for(int j=i;j<length+i;j++)
    29            {
    30               sum=sum+a[j];
    31               if(sum>max)
    32               {
    33                  max=sum;
    34               }
    35            }
    36           a[length+i]=a[i];    //每次将已经计算过的数放到最后
    37          }
    38         System.out.println("最大子数组的和为:"+max);
    39         sc.close();
    40     
    41 
    42     }
    43 
    44 }

    运行结果截图:

  • 相关阅读:
    Python基础学习笔记(10)形参 命名空间
    10 练习题:形参 命名空间
    09 练习题:函数、参数
    4.题库
    第三章:构造NFA DFA
    第二章
    第一章
    83.jquery的筛选与过滤
    82.认识jQuery以及选择器
    81.案例 初始化、拖拽、缓冲
  • 原文地址:https://www.cnblogs.com/mxk123456/p/12380408.html
Copyright © 2020-2023  润新知