• 软件工程课堂三


    求二维数组的矩形数组的最小数组和。

    最笨的设计思想:将这个矩形是两个对角顶点组成的。将两个点设为a,b。a表示上面那个顶点,b表示下面那个顶点。将a固定,移动b点直至出二维数组,然后移动a点,再将b点指向a点。这样轮回直到a移出二维数组。

    package test3;
    public class The_thrid_test {
     public static void main(String[] args) {
      int a[][]= {{-1,2,3,-4},{-1,2,3,-4},{-1,2,3,-4},{-1,2,3,-4}};//表示一个二维数组
      int max = a[0][0];  //初始化最大值
      int sum=0;  //定义每个子二维数组的和
      int as=0,bs=0,n=0,m=0;  //定义让矩形的两个对顶点的角标
      while(n<a.length) {    //如果矩形的第一个顶点出了二维数组时跳出循环
       
       for(int i=n;i<=as;i++) {    //计算以不同数字为矩形第一个顶点的多有子二维数组的和
        for(int j=m;j<=bs;j++) {
         sum+=a[i][j];
        }
       }
       
       //让下面的顶点移动
       bs++;
       if(bs==a[as].length) {
        as++;
        bs=m;
       }
       
       //让上面的顶点移动并将移到外面的顶点指向上面的顶点上。
       if(as==a.length) {
        m++;
        if(m==a[n].length)
        {
         n++;
         m=0;
        }
        as=n;
        bs=m;
       }
       //比较最大值
       if(sum>max)
        max=sum;
       sum=0;
      }
      System.out.println(max);
     }
    }
  • 相关阅读:
    从狄利克雷卷积到莫比乌斯函数
    Codeforces Round #613 (Div. 2)
    Codeforces Round #612 (Div. 2)
    CTF:第五题
    CTF:第四题
    CTF:第三题
    CTF,第二题
    CTF,第一题
    我也要做CTF了,哎,人老了,脑子需要动一动了,第一节,配置本地环境
    websocket JS使用方式
  • 原文地址:https://www.cnblogs.com/goubb/p/10590756.html
Copyright © 2020-2023  润新知