• 结对开发四---实现环状二维数组求最大子数组的和


    一、实现思路

    再上一个实验基础上加上环,我们实现环的思想是每一列依次向此替换,直至替换出能出现的所有的二维数组,再用上一个求最大子数组的方法全部实现

    二、实验代码

    package com.minirisoft;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.util.Scanner;
    
    public class HuanTwoArray {
    	public static int Exchange(int arr[][],int n,int m)
    	{
    		int t;
    		for(int j=0;j<n-1;j++)
    		{
    			for(int i=0;i<m;i++)
    			{
    			t=arr[i][j];
    			arr[i][j]=arr[i][j+1];
    			arr[i][j+1]=t;
    			}
    		}
    		return 0;
    	}
    	public static void ShowFirstArray(int arr[][],int n,int m)
    	{
    		System.out.println("转变后此时的数组为 ");
    		for(int p=0;p<n ;p++ )
    		{
    			for(int q=0;q<m ;q++ )
    			{
    				System.out.print(arr[p][q]+" ");
    			}
    			System.out.println();
    		}
    	}
    	public static void ShowArr(int arr[][],int line1,int line2,int row1,int row2)
    	 {
    	     for(int i=line1;i<=row1;i++)
    	     {
    	         for(int j=line2;j<=row2;j++)
    	         {
    	        	 System.out.print(+arr[i][j]+" ");
    	         }
    	         System.out.println();  
    	     }
    	 }
    	public static int GetSum(int arr[][],int n,int m,int k,int l)
    	 {
    	    int sum=0;
    	    for(int f=n;f<=k;f++)
             {
               for(int h=m;h<=l;h++)
                {
                sum+=arr[f][h];
                }
             }
    	    return sum;
    	 }
    	public static void main(String[] args)
    	{
    		int sum=0;
    		int n;
    		int m;
    		int k;
    		int l;
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入二维数组为几行几列:");
    		int x=sc.nextInt();
    		int y=sc.nextInt();
    		int[][] arr = new int[x][y];//读取出的数组
    		int[]max = new int[y];//读取出的数组
    		System.out.println("请输入二维数组:");
    		for(int p=0;p<x;p++)
    		{
    			for(int q=0;q<y;q++)
    			{
    				arr[p][q]=sc.nextInt();
    			}
    		}
    		System.out.println("您二维数组为:");
    		for(int p=0;p<x ;p++ )
    		{
    			for(int q=0;q<y ;q++ )
    			{
    				System.out.print(arr[p][q]+" ");
    			}
    			System.out.println();
    		}
    		int line1=0;
    		int line2=0;
    		int row2=0;
    		int row3=0;
    		for(int r=0;r<y;r++)
    		{
    			max[r]=arr[0][r];
    			Exchange(arr,x,y);
    			ShowFirstArray(arr,x,y);
    		    for(n=0;n<x;n++)
    		    {	
    		         for(m=0;m<y;m++)
    		         {
    			         for(k=n;k<x;k++)
    			          {
    			    	     for(l=m;l<y;l++)
    			    	      {
    			    		     sum=GetSum(arr,n,m,k,l); 
    			    		     if(sum>max[r])
    			                  {
    			    		    	 max[r]=sum;
    			    			    line1=n;                //保存第一个数的行
    			    		        line2=k;                //保存第二个数的行
    			    			    row2=m;                    //保存第一个数的列
    			    			    row3=l;                    //保存第二个数的列
    			                   }
    			    	      }
    			           }
    		          }
    		    }
    		System.out.println("最大子数组的为:");
    		ShowArr(arr,line1,row2,line2,row3);
    		System.out.println("最大子数组的和为:"+max[r]);
    		}
    		for(int r=0;r<y;r++)
    		{
    			if(max[r]>max[0])
    			{
    				max[0]=max[r];
    			}	
    		}
    		System.out.println("最大子数组的和为"+max[0]);
    	}
    		 
    }          
    三、实验截图
    
    
    

    四、体会心得

    经过这次实验对二维数组的遍历更加了解。我们小对也感觉磨合期已过,合作更加融洽

    五、小组成员:杨广鑫、郭健豪

  • 相关阅读:
    软件体系结构:二维分层、模块化和开放平台
    Unity手游之路<七>角色控制器
    Unity手游之路<四>3d旋转-四元数,欧拉角和变幻矩阵
    Unity手游之路<三> 基于Unity+Java的聊天室源码
    Unity手游之路<二>Java版服务端使用protostuff简化protobuf开发
    Unity手游之路<一>C#版本Protobuf
    Unity手游之路<八>自动寻路Navmesh之入门
    Unity手游之路<九>自动寻路Navmesh之高级主题
    Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡
    raise EnvironmentError("%s not found" % (mysql_config.path,)) EnvironmentError: mysql_config not found 解决办法
  • 原文地址:https://www.cnblogs.com/tianyaguying/p/4393037.html
Copyright © 2020-2023  润新知