给定一个二维数组和一个整数K,求其子矩阵元素不超过K的最大和-笔试面试资料

这是qklbishe.com第13513 篇笔试面试资料
提供答案分析,通过本文《给定一个二维数组和一个整数K,求其子矩阵元素不超过K的最大和-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给定一个二维数组和一个整数K,求其子矩阵元素不超过K的最大和
给定一个二维数组和一个整数K,求其子矩阵元素不超过K的最大和 区块链毕设学生79631828号
import java.util.*;  public class Main {     public static void main (String[] args) {         Scanner sc = new Scanner(System.in);         int row = sc.nextInt();         int col = sc.nextInt();         int k = sc.nextInt();         int[][] matrix = new int[row][col];         for (int i = 0; i < row; i++) {             for (int j = 0; j < col; j++) {                 matrix[i][j] = sc.nextInt();             }         }         int res = 0;         //压缩矩阵,既然查看的是累加和那么就可以把不同行的和放在同一个数组中,         //反正和肯定是一样的,然后遍历或合并所有可能的数组         for (int init = 0; init < row; init++) {             int[] tmp = new int[col];             for (int i = init; i < row; i++) {                 for (int j = 0; j < col; j++) {                     tmp[j] += matrix[i][j];                 }                 res = Math.max(res, maxSumArr(tmp, k));             }         }         System.out.println(res);     }          //在一个数组中寻找累加和<=k的子串的最大和     public static int maxSumArr(int[] arr, int k) {         //有序表存储曾经出现过的和         TreeSet<Integer> set = new TreeSet<Integer>();         set.add(0);         int max = Integer.MIN_VALUE;         int sum = 0;         for (int i = 0; i < arr.length; i++) {             sum += arr[i];             if (set.ceiling(sum - k) != null)                 max = Math.max(max, sum - set.ceiling(sum - k));             set.add(sum);         }         return max;     } }

今天 15:34:02 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个二维数组和一个整数K,求其子矩阵元素不超过K的最大和-笔试面试资料

提供最优质的资源集合

立即查看 了解详情