zoukankan      html  css  js  c++  java
  • 课堂作业

    源代码如下:

    package classone;
    import java.util.Scanner;
    public class Test {
            static int number=50;         
            static int[] t1 = new int[number];
            static int[] t2 = new int[number];                //从第几个开始子数组
            static int[] t3 = new int[number];                            //从第几个开始子数组之和
            static int[] t4 = new int[number];                //从第几个开始子数组
            static int[] t5 = new int[number];
            static int[] t6 = new int[number];                //从第几个开始子数组
            static int[] t7 = new int[number];
            static int[] t8 = new int[number];
       
        public static void input() {
            t1[0]=0;t2[0]=0;t3[0]=0;
            System.out.println("输数字数量:");
            Scanner input=new Scanner(System.in);
            number=input.nextInt();
            
            for(int i=1;i<=number;i++)
            {
                
                int a=(int)(Math.random()*2+1);
                int aa=(int)(Math.pow(-1, a));
                System.out.println(aa);
                int aaa=(int)(Math.random()*100+1);
                int b=aa*aaa;
                t1[i]=b;
            }
            System.out.println("T1数组:");
            for(int i=1;i<=number;i++){             
                System.out.print("["+t1[i]+"]"); }
        }                                                      //输入数组
        
        public static void vs() {
            int max=0;//比较
            int b=t1[1];
            int count=0;
            int single;
            int single1;
            int icount=0;
            int jcount=0;
            int sum=0;
            for(int i=1;i<=number;i++) 
            {
                icount++;   //记录I执行次数
                int num=0;   //当前数组之和
                for(int j=i;j<=number;j++) 
                {
                    count++;         //计数比较了多少给数组
                    jcount++;        //记录J执行次数
                    num+=t1[j];    //当前数组之和
                    t2[j]=num;    //t2存储当前数组之和 
                    t2[0]=t2[1];
                    
                    
                    for(int s=1;s<=number;s++)
                    {
                        max=t2[j-1];
                        if(max<t2[j]) 
                        {
                            max=t2[j];
                        }        
                    }
                    
                    
                    t3[count]=max;
                    
    //                System.out.println(t3[count]);
    //                t3[0]=t3[1];
                    sum=t3[1];
                    for(int a=1;a<=count;a++) {
                        if(sum<t3[a]) {
                            sum=t3[a];
                        }
                    }
                    System.out.println();
                    System.out.println("----------------------------");
                    System.out.println("当前最大子数组之和为:"+sum);
                    System.out.println("当前共检查了"+count+"个子数组");
                    System.out.println("该子数组是从第"+i+"个到第"+j+"个");
                    System.out.println("当前子数组之和为"+t2[j]);
                    System.out.println("继续?输入1 回滚?输入2");
                    System.out.println("----------------------------");
                    Scanner input=new Scanner(System.in);
                    single=input.nextInt();
                    if(single==2) {
                        System.out.println("输入要回滚的序号:");
                        single1=input.nextInt();
                        if(single1>icount) {
                            count=single1-1;
                            j=single1-icount;
                            num=0;
                            for(int q=i;q<=j;q++)
                            {
                                num+=t1[i];
                            }
                        }else if(single1<icount) {
                            j=1;
                            i=single1;
                            count=single1-1;
                            num=0;
                            for(int q=i;q<=j;q++)
                            {
                                num+=t1[i];
                            }
                        }
                    }
            }
        }
            System.out.println("
    "+"子数组之和最大值为:"+sum);
        }
        public static void main(String[] args) {
            input();
            vs();
        }
    }

    结果

  • 相关阅读:
    for of 与 for in的区别2
    jQuery的deferred对象详解
    poj 3128 Leonardo&#39;s Notebook(置换的幂)
    解决shell脚本中 echo 怎么写入换行到文件
    【解答】关于内核中没开MMU之前的虚拟地址物理地址转换问题
    iOS中怎样加入自己定义的字体
    Android学习笔记(十四)——在执行时加入碎片(附源代码)
    Threads and Anonymous Classes in JAVA
    与一线Linux嵌入式开发project师的对话
    公司实习经验分享
  • 原文地址:https://www.cnblogs.com/zlc364624/p/10770555.html
Copyright © 2011-2022 走看看