• 软件工程作业05,数组01


    开发要求:

    1、输入一个整型数组,数组里有正数也有负数;

    2、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;

    3、求所有子数组的和的最大值,要求时间复杂度为O(n);

    一设计思路:

       1.键盘输入int型数组

           1.2确定数组长度

            1.3 进行数组输入赋值

              1.4 进行输入数字检查(是否是数字,是否超额)

         2进行子数组相加求和

            2.1 判断sum初始值,

             2/2 sum<0,取sum=arry[i],否则相加求sum

             2/3进行 sum和maxsum比较大小

          3如果子数组全是负数 ,MAxsum=max;

            3/2max=arry[0]输入数组的首个

      ,

           

        

    二:实验代码

      1 package shuzu01;
      2 
      3 import java.util.Scanner;
      4 import java.lang.*;
      5 public class Test {
      6     
      7     private static boolean flase;
      8 
      9 
     10 
     11 
     12 
     13     @SuppressWarnings("unused")
     14     public  static void main(String arg[])
     15     {
     16         int i;
     17         Scanner input =new Scanner(System.in);
     18         System.out.println("请输入一个数组的长度");
     19         int length=input.nextInt();
     20      int []arry=new int[length];
     21         //判断数组输入整数
     22         System.out.println("请输入一个数组");
     23         for(i=0;i<length;i++ )
     24         {
     25             int a=input.nextInt();
     26             isNumeric(a);
     27             if(false)
     28                 {
     29                   System.out.println("请输入一个整数");
     30                 int s=input.nextInt();
     31                    
     32                   arry[i]=s;
     33                 }
     34             arry[i]=a;
     35             
     36         }
     37          int Maxsum=0,max,num=1,count=0;
     38         int sum=0;
     39         //Maxsum是子数组和最值,max是整数最值
     40          //sum是子数组和,coun他表示复数个数
     41          for(i=0;i<length;i++)
     42          {
     43              if(sum<0)
     44              {
     45                  sum=arry[i];
     46              }
     47              else
     48              {
     49                  sum+=arry[i];//当子数组和小于0时,与无论与后面数组如何相加,和肯定小于后一段数组之和,此时,将b重新赋值,置为下一个元素
    50 } 51 if(Maxsum<sum) 52 { 53 Maxsum=sum; 54 } 55 } 56 //最大元素数组中 57 max=arry[0]; 58 for(i=0;i<length;i++) 59 { 60 if(arry[1]<0) 61 { 62 count++; 63 } 64 if(arry[i]>0) 65 { 66 max=arry[i]; 67 } 68 if(count==length) 69 { 70 Maxsum=max; 71 } 72 } 73 74 System.out.println("子数组最大值"+Maxsum); 75 76 77 78 79 80 for(i=0;i<length;i++ ) 81 { 82 System.out.println(arry[i]); 83 } 84 85 } 86 87 88 89 //判断函数,表示输入的是数字 90 91 public static boolean isNumeric(int a) 92 { 93 if (!Character.isDigit(a)) 94 { 95 return false; 96 } 97 98 99 return true; 100 } 101 102 }

    三:截图:

  • 相关阅读:
    linux安装jdk1.8
    Python中import
    Python时间
    Python学习Json
    Hive命令学习
    Hadoop系统中的一些概念
    Hadoop系统命令
    ssh无密码登录设置
    Python学习
    Linux Socket IPC
  • 原文地址:https://www.cnblogs.com/gdp176119/p/5364554.html
Copyright © 2020-2023  润新知