#1502 : 最大子矩陣
最大子矩陣
時間限制:10000ms
單點時限:1000ms
記憶體限制:256MB
描述
給定一個NxM的矩陣A和一個整數K,小Hi希望你能求出其中最大(元素數目最多)的子矩陣,並且該子矩陣中所有元素的和不超過K。
輸入
第一行包含三個整數N、M和K。
以下N行每行包含M個整數,表示A。
對於40%的資料,1 <= N, M <= 10
對於100%的資料,1 <= N, M <= 250 1 <= K <= 2147483647 1 <= Aij <= 10000
輸出
滿足條件最大的子矩陣所包含的元素數目。如果沒有子矩陣滿足條件,輸出-1。
樣例輸入
3 3 9 1 2 3 2 3 4 3 4 5樣例輸出
4思路:
- 將以rows為起點的矩陣存入一維sum陣列中
- 之後使用尺取法遍歷sum陣列來找出滿足題目條件的元素數目
- 時間複雜度O(n^3)滿足題目條件
AcCode:
import java.util.Arrays; import java.util.Scanner; public class Main{ public static int getMax(int[][] nums,int k) { int maxNum = -1; int[] sum = new int[nums[0].length]; for (int rows = 0; rows < nums.length; rows++) { Arrays.fill(sum, 0); for (int i = rows; i < nums.length; i++) { for (int j = 0; j < nums[i].length; j++) { sum[j]+=nums[i][j]; } //尺取法 int begin = 0; int end = begin+1; int p = 0; int thisSum = sum[begin]; if(thisSum<k) { if((begin+1)*(i+1)>maxNum) { maxNum = (begin+1)*(i+1); } } while(begin<sum.length && end<sum.length) { if(end!=p) { thisSum+=sum[end]; } if(thisSum<k) { if((end-begin+1)*(i-rows+1)>maxNum) { maxNum = (end-begin+1)*(i-rows+1); //System.out.println(i+" "+begin+" "+end); } end++; }else { p = end; thisSum-=sum[begin]; if(begin==end) { p=-1; end = begin+1; continue; } begin++; } } } } return maxNum; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int M = in.nextInt(); int k = in.nextInt(); int[][] nums = new int[N][M]; for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums[i].length; j++) { nums[i][j] = in.nextInt(); } } System.out.println(getMax(nums, k)); } }
相關文章
- 最大子矩陣和矩陣
- 最大子段和 | 最大子矩陣 | 最大M子段和矩陣
- poj1050 最大子矩陣和矩陣
- POJ 1050-To the Max(最大子矩陣和)矩陣
- openjudge1768 最大子矩陣[二維字首和or遞推|DP]矩陣
- 動態規劃-最大子矩陣和(ZOJ 1074 TO THE MAX )動態規劃矩陣
- CF22B 最大子矩陣問題簡單版矩陣
- bzoj1084: [SCOI2005]最大子矩陣(Dp)矩陣
- hdu4328 最大子矩陣問題O(n*m)掃描思想矩陣
- 第四章:多維陣列和矩陣 ------------- 4.4 找出邊界為1的最大子方陣陣列矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 【DP】乘積最大子陣列陣列
- 53. 最大子陣列和陣列
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- 陣列1——求一個陣列的最大子陣列陣列
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 海浪矩陣矩陣
- 8.6 矩陣?矩陣
- 螺旋矩陣矩陣
- 找矩陣矩陣
- 矩陣乘法矩陣
- 迴圈陣列最大子段和陣列