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

    import java.util.Scanner;
    public class shuzu {//最大的括号
     public shuzu() {
            // TODO Auto-generated constructor stub
        }
        public static void main(String[] args)
        {//1
            int max=0;int sum=0;
            Scanner scanner=new Scanner(System.in); 
            System.out.println("输入数组长度");
            int n=scanner.nextInt();
            System.out.println(n);
            System.out.println("输入一个数组");
            int A[]=new int [n];
            int B[]=new int [n];
            int C[]=new int [n];
            for(int i=0;i<n;i++)//这一步之前都是把数组输入
            {A[i]=scanner.nextInt();}
            
            if(A.length==0)
            {max=0;System.out.println(max);}
            else if(A.length==1)
            {max=A[0];
            System.out.println(max);}//这里是把数组长度为0和为1的情况算进去了
            
            
            
            
            
            else {//2
                for(int k=0;k<n;k++) {//3
                    /*System.out.println("第");
                    System.out.println("("+k+")");
                    System.out.println("次计算的加和");
                    System.out.println(C[k]);*/
                    
                    
                    for(int i=k,a=0;i<n;i++)
                {
                    a=a+A[i];
                    B[i]=a;
                }//使得B数组n个从一开始的子数组
                    
                C[k]=B[0];
                for(int i=k;i<n;i++)
                {/*System.out.println("第");
                    System.out.println("("+k+")");
                    System.out.println("次计算的加和");
                    System.out.println(C[k]);*/
                    
                    
                if(B[i]>C[k])
                    C[k]=B[i];
                
                }
                /*System.out.println("第");
                System.out.println("("+k+")");
                System.out.println("次计算的加和");
                System.out.println(C[k]);*/
                }//3排序使得B中的最大值为c【n】,从一开始是c【1】;
                
            }//2
        max=C[0];
        for(int i=1;i<n;i++)
        {
            
            if(C[i]>max)
            {max=C[i];}
            /*System.out.println("第");
            System.out.println("("+k+")");
            System.out.println("次计算的加和");
            System.out.println(C[k]);*/
            
            
            //System.out.println(max);用这个来查看计算结果
        }
        System.out.println(max);
        
        
        
        
        
        
        
        
        
        
        
        }//1
            
            
    }//最大的括号

    代码如上

    我的思想大概就是这样吧,分部的第一步基本上就是这样的:首先要完成对数据的处理,就是每次都把最大子数组找出来。但我发现,我所写的程序很不适合我来进行类似的处理。我的方式是先把数组从头加到尾,这样保障数组可以覆盖所有的值。创造一个数组A来储存数据,然后用B数组进行存储这一部分的和,然后把从某个数开始的数组和进行比较,然后把值付给c数组。最后比较数组c,求出最大值就可以了。这样来进行上述的最大值求取就有一些困难,因为我把数组做的非常的分散。不适合

    进行分步处理。

    如果能确定它在哪一个循环里面输出就行了。不过和我开始怀疑我的程序是错的(就是最初那个版本,因为按逻辑只改一个输出的话不应如此)以下是输出截图:

    这样的结果,改了很多地方,把输出位置换了几次,结果都不对。

    哎,感觉应该是这个程序本身就有问题吧,亦或是我学艺不精。

  • 相关阅读:
    2018-2019-2 20165235 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
    2018-2019 20165235 网络对抗 Exp5 MSF基础
    2018-2019 20165235 网络对抗 Exp4 恶意代码分析
    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践
    2018-2019-2 20165235《网络对抗技术》Exp2 后门原理与实践
    Exp1 PC平台逆向破解 20165235 祁瑛
    2018-2019 20165235 网络对抗技术 Exp0:kali的安装
    20165302 Exp9 Web安全基础
    20165302 Exp 8 Web基础
    2018-2019-2 20165302 Exp7 网络欺诈防范
  • 原文地址:https://www.cnblogs.com/jyt123/p/10760257.html
Copyright © 2011-2022 走看看