辽宁建设工程信息网网站,wordpress 一小时建站教程,国际新闻热点事件,北京网站建设方案开发公司要求#xff1a;求一个二维数组的最大子数组和 思路#xff1a;对于这个题#xff0c;我会最简单的读取#xff0c;虽然在网上查到了代码#xff0c;但是查找最大子数组的循环我真的看不懂#xff0c;也不是特别懂思路#xff0c;所以在这不会写思路 package 二维数组;
…要求求一个二维数组的最大子数组和 思路对于这个题我会最简单的读取虽然在网上查到了代码但是查找最大子数组的循环我真的看不懂也不是特别懂思路所以在这不会写思路 package 二维数组;
import java.util.*;public class Tarray {static Scanner scanner new Scanner(System.in);public static void main(String args[]){int m,n;int b;Scanner scanner new Scanner(System.in);System.out.println(二维数组的列数);m scanner.nextInt();System.out.println(二维数组的行数);n scanner.nextInt();int arr[][] new int[n][m];System.out.println(请输入二位数组);for(int i 0;in;i)for(int j0;jm;j){arr[i][j] scanner.nextInt();}System.out.println(\n);b maxArrSum(arr);System.out.println(最大联通数组的最大和为b);}public static int[][] arrSum(int arr[][]){int m arr.length;int n arr[0].length;int p[][] new int[m1][n1];p[0][0] arr[0][0];for(int i0; im; i) p[i][0] 0;for(int i0; in; i) p[0][i] 0;for(int i1; im; i){for(int j1; jn; j){p[i][j] p[i-1][j] p[i][j-1] arr[i-1][j-1] - p[i-1][j-1];}}return p;}//遍历所有二维数组的矩形区域static int maxArrSum(int arr[][]){int m arr.length;int n arr[0].length;int p[][] arrSum(arr);int ans Integer.MIN_VALUE;for(int i1; im; i){for(int j1; jn; j){for(int endii; endi m; endi){for(int endjj; endjn; endj){ int sum p[endi][endj] - p[i-1][endj] - p[endi][j-1] p[i-1][j-1];if(ans sum) ans sum; }} } } return ans; }} 实验截图 实验总结这个程序是网上的除了循环的算法其他的是我自己写的但是我并不是没有收获在测试打印读取的数组的时候发现了数组越界的问题彻底地理解了这个错误还有打印二位数组需要循环打印不能直接打印这是我得到的收获虽然没能理解算法的循环。但是也有其他的收获这份代码没有白学 转载于:https://www.cnblogs.com/ljm-zsy/p/10590946.html