二维数组

设计思想:首先我们应该把求二维数组转换为求一维数组,将每行中的第i列到第j列进行相加,然后得到一个列的矩阵,然后再通过求一维数组的方法来求最大子数组。
问题:对于二维数组求最大子数组刚开始没有任何的思路,不知道该怎么编写,后来在网上找了相关的思路进行编写
 
 package 数组3;

import java.util.Scanner;

public class shuzu3 {
static Scanner in=new Scanner(System.in);
public static void main (String[] args){
int num1[]=new int[10];
    int num2[]=new int[20];
    System.out.println("请输入数组个数");
    int n;
    n=in.nextInt();
    System.out.println("请输入数组");
    for(int i=0;i<n;i++) {
        num1[i]=in.nextInt();
        num2[i]=num1[i];
    }
    for(int i=0;i<n;i++) {
        num2[i+n]=num1[i];
    }
    System.out.println("请输入从几个数开始查询");
    int m;
    m=in.nextInt();
    int max=0; 
    int max2=0;
    max2=num2[m-1];
    for(int i=m-1;i<n+m-1;i++) {
        if(max<=0) {
            max=num2[i];
        }else {
            max+=num2[i];
        }
        if(max2<max) {
            max2=max;
        }
    }
    System.out.println(max2);
}
}
 
 
总结:如果想求最大子数组的和,最重要的是遍历数组的方法,但是对于二维数组来说,将每个子数组都遍历出来太困难了,后来通过上网查找以及上课的讨论,找到了一种方法来求最大子数组的和,在这次作业中,发现算法很重要,如果我们在编程之前想到了一个很好的方法,那么最好往往可以达到事半功倍的效果。
 
posted on 2019-03-18 14:00  啥123  阅读(160)  评论(0编辑  收藏  举报