zoukankan      html  css  js  c++  java
  • 二维数组环和最大子数组的和

    1.实验要求

      随机产生一个二维整形数组,数组里有正数也有负数。

      二维数组首尾相接,象个一条首尾相接带子一样。

      数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 

      求所有子数组的和的最大值。

    2.实验思路

      先随机产生一个二维数组;

      二维数组的第一列移动到最后一列,求最大的子数组和;

      二维数组的第一列移动到最后一列,求最大的子数组和;

      二维数组的第一列移动到最后一列,求最大的子数组和;

      ······

      直到循环完毕。

    3.完整代码

    package 二维环;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class b {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int a[][];
    		int i,ii,j,jj,l,h,n,nn,k,kk,sum,max=0;
    		///随机产生一个数组
    		Scanner scanner = new Scanner(System.in);
    		System.out.print("输出随机产生的数组的长度:");
    		h=scanner.nextInt();
    		System.out.print("输出随机产生的数组的高度:");
    		l=scanner.nextInt();
    		scanner.close();
    		a=new int[l][h];
    		
    		for(i=0;i<l;i++)
    		{
    			for(j=0;j<h;j++)
    			{
    				Random random = new Random();
    				a[i][j]=random.nextInt(19);
    				a[i][j]=a[i][j]-9;
    				System.out.print(a[i][j]);
    				System.out.print(" ");
    			}
    			System.out.println("");
    		}
    		
    		for(nn=0;nn<h;nn++)
    		{
    			for(ii=0;ii<l;ii++)//l行的第一个数放到最好
    			{
    				kk=a[ii][0];
    				for(jj=0;jj<h-1;jj++)//每一行的第一个数放到最好
    				{
    					a[ii][jj]=a[ii][jj+1];
    				}
    				a[ii][jj]=kk;
    			}
    			System.out.println("将数组的第一列放到最后一列: ");
    			for(i=0;i<l;i++)/////////aaa输出动后的数组
    			{
    				for(j=0;j<h;j++)
    				{
    					System.out.print(a[i][j]);
    					System.out.print(" ");
    				}
    				System.out.println("");
    			}////////////////////////aaa输出动后的数组
    			//max=0;
    			for(n=0;n<l;n++)
    			{
    				sum=0;
    				for(i=0;i<l-n;i++)
    				{
    					sum=0;
    					for(j=0;j<h;j++)
    					{
    						for(k=i;k<=i+n;k++)
    						{
    							sum=sum+a[k][j];
    						}
    						//System.out.print(sum);
    						//System.out.print(" ");
    						if(sum<0)
    						{
    							sum=0;
    						}
    						if(max<sum)
    						{
    							max=sum;
    						}
    					}
    				}
    			}
    			System.out.print("目前求得的最大和的子数组的和为: ");
    			System.out.println(max);
    		}
    	}
    
    	
    
    }

    4.实验截图

  • 相关阅读:
    Job for vsftpd.service failed because the control process exited with error code
    Linux 调优方案, 修改最大连接数-ulimit
    vsftpd配置文件详解
    Linux下TCP最大连接数受限问题
    vsftp限制FTP用户只能访问自己的目录
    linux YUM常用 命令
    Linux 系统sudo命令
    部分有关 广告联盟作弊 与反作弊资料收集
    Boosted Tree
    如何将数据转换libsvm格式文件
  • 原文地址:https://www.cnblogs.com/feifeishi/p/4442128.html
Copyright © 2011-2022 走看看