• 二维数组


    拿到这个题,总是想着一部解决问题,结果越想越乱,越想越头疼。

    一开始我想的是,将二维数组转化为一维数组,但是逻辑不通,基本就不可能实现,之后也就放弃了。

    设计思想:

    首先需要确定计算出所有子数组,再求最大子数组;

    那么问题就来了:如何确定子数组呢?课上也是受到老师的点播:

    确定子数组:只需确定左上角与右下角数据坐标便可;

    之后就可以计算在确定区间里数据的和了。

    源代码:

    import java.util.List;
    import java.util.Scanner;
    import java.util.*;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.lang.Math;
    import java.io.IOException;
    public class ErJie {
        
        public static void main(String[] args)
        {
            //定义
        int[][] str=new int[100][100];//主体
        int[] str1=new int [100];//每一个的串值
        //规定长与宽
        System.out.println("请输入长,宽:");
        int a=0;//总数
        int b=0;
        Scanner scan=new Scanner(System.in);
        a=scan.nextInt();
        b=scan.nextInt();
        //输入值
        System.out.println("请输入值:");
        for(int i=0;i<a;i++) {
            for(int j=0;j<b;j++)
            {int s1;
            s1=scan.nextInt();
            str[i][j]=s1;}
        }int l=0;
        //输出
        for(int i=0;i<a;i++) {
            for(int j=0;j<b;j++)
            System.out.println("("+(i+1)+", "+(j+1)+")是:"+str[i][j]);
        }
        //代码实现
        int Q=0;int M=0;
        for(int i=0;i<a;i++) {//一共一行到a行
            Q=Q+1;//几块进行运算(2 4 。。)
            int O=0;
            for(int n=i;n<a;n++) {//每一行
                O=O+1;//每一行就是对一维的下移
                for(int j=0;j<b;j++) {//每一个
                    int P=0;//每一个小组合的第一个
                    for(int m=j;m<b;m++) {//从j加到最后
                        int a1=str[i][j];
                        
                        for(int x=i;x<=n;x++) {
                            for(int y=j;y<=m;y++) {
                                a1=str[x][y]+a1;
                            }
                        }
                        str1[M]=a1-str[i][j];
                        M=M+1;
                    }
                }
            }
        }
        int x=str1[0];
        for(int i=0;i<M;i++) {
            if(str1[i]>x)x=str1[i];
        }
        
        System.out.println(x);

     摘自https://www.cnblogs.com/smartisn/p/10584400.html

  • 相关阅读:
    单例模式(Singleton)
    cdlinux
    android 去锯齿
    ide
    图片加载内存溢出
    android AlertDialog 弹出窗
    找回 文件下载 ie 窗口
    javac 多个jar文件 用封号 隔开
    android 模拟按钮点击
    android 加载多个图片 内在溢出的问题
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/11058068.html
Copyright © 2020-2023  润新知