• 课时作业3


    课时作业3

     课时作业三主要写方法,实现呢,做不到

    首先第一点可以肯定的是,如何把所有的数据都涵盖在内容那个里面这个很重要,就是如何完美遍历

    这里采用的方法是,以行带点。先把每一行的最大子数组求出来,这个好求,用之前的算法即可

    然后第一行和第二行相加得出一个新行,再求这一行的最大子数组,然后第一行第二行第三行都相加求最大的子数组。

    然后第一行加加加加加,一直加到最后一行都加上,再求最大子数组。

    然后从第二行开始,再加上第三行如此循环

    还记得一位数组怎么求最大子数组吗,就是这样的反复加法遍历循环,一共相加n-1的阶乘次就行了

    这样一共可以获得n+(n-1)!个数,求这些数中的最大值就行了

    这样的书一定是涵盖所有情况的

    代码如下

    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 [100];
            int C[]=new int [100];
            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
                for(int i=k,a=0,b=0;i<n+k;i++)
                {if(i<=n)
                    {a=a+A[i];
                    B[i]=a;}
                else {a=a+A[i]+A[b];
                     B[i]=a;b++;}
                    
                }//使得B数组n个从一开始的子数组
                C[k]=B[0];
                for(int i=k;i<n+k;i++)
                {
                if(B[i]>C[k])
                    C[k]=B[i];}
                
                }//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(max);用这个来查看计算结果
        }
        System.out.println(max);
        }//1
    }//最大的括号
    这是一维的因为二维的怎样都无法实现,就先这样放着吧,想这种方法也是费了很大功夫呢
    成功实现之后在放图和二维代码

    然后从文件中读取的话,只要得到对角的角标就可以确定行列变换了

    也是,遍历后读取,只要能读取进去,用上述方法就可以计算了

  • 相关阅读:
    Go语言 0 前言
    SVM支持向量机的基本原理
    支持向量机通俗介绍
    线程句柄和线程ID的区别
    分布式事务一致性,事务补偿实战
    ResultSet is from UPDATE. No Data.
    linux 批量kill进程
    mysql数据表拷贝
    Maven assembly 打包
    JS 删除对象属性
  • 原文地址:https://www.cnblogs.com/jyt123/p/10589610.html
Copyright © 2020-2023  润新知