一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵
- 题目描述:
-
一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积)
- 输入:
-
每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K
接下来N行,每行M个数,表示矩阵每个元素的值
- 输出:
-
输出最小面积的值。如果出现任意矩阵的和都小于K,直接输出-1。
- 样例输入:
-
4 4 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- 样例输出:
-
1
首先这个题应该是有一个动态规划的解法,不过好像复杂度也要到O(n^3logn),所以这里直接暴力了。但是为了节省时间首先计算出从左上角开始的矩阵的和,然后根据这个和可以求各个矩阵的值
1 //计算左上角为(1,1)的所有子矩阵的和,需要O(N^2)的时间。 2 //此时只需要O(1)的时间就可以算出每个子矩阵的和。 3 //枚举次数依然不变。总时间复杂度为O(N^4) 4 #include<iostream> 5 #include<cstdio> 6 #include<cstring> 7 using namespace std; 8 int main() 9 { 10 //freopen("t","r",stdin); 11 int m,n,k; 12 while(cin>>m>>n>>k){ 13 int ma[105][105]; 14 for(int i=0;i<m;i++){ 15 for(int j=0;j<n;j++){ 16 cin>>ma[i][j]; 17 } 18 } 19 int sum[105][105]; 20 memset(sum,0,sizeof(sum)); 21 sum[0][0]=ma[0][0]; 22 for(int i=1;i<m;i++){ 23 sum[i][0]=ma[i][0]+sum[i-1][0]; 24 } 25 for(int i=1;i<n;i++){ 26 sum[0][i]=ma[0][i]+sum[0][i-1]; 27 } 28 for(int i=1;i<m;i++){ 29 for(int j=1;j<n;j++){ 30 sum[i][j]+=sum[i][j-1]; 31 for(int k=0;k<=i;k++){ 32 sum[i][j]+=ma[k][j]; 33 } 34 } 35 } 36 37 int minsize=999999; 38 for(int a=0;a<m;a++){ 39 for(int b=a;b<m;b++){ 40 for(int c=0;c<n;c++){ 41 for(int d=c;d<n;d++){ 42 int s=0; 43 if(a==0&&b==0&&c==0&&d==0){ 44 s=sum[0][0]; 45 } 46 else if(a==0&&c==0){ 47 s=sum[b][d]; 48 } 49 else if(a==0){ 50 s=sum[b][d]-sum[b][c-1]; 51 } 52 else if(c==0){ 53 s=sum[b][d]-sum[a-1][d]; 54 } 55 else{ 56 s=sum[b][d]+sum[a-1][c-1]-sum[a-1][d]-sum[b][c-1]; 57 } 58 if(s>=k){ 59 int sizee=(b-a+1)*(d-c+1); 60 if(minsize>sizee){ 61 minsize=sizee; 62 } 63 } 64 } 65 } 66 } 67 } 68 if(minsize==999999){ 69 cout<<-1<<endl; 70 } 71 else{ 72 cout<<minsize<<endl; 73 } 74 } 75 return 0; 76 }
转载于:https://www.cnblogs.com/MrLJC/p/3815069.html
一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵相关推荐
- 找出整形数组中的元素最大值。
// 121218 第八章例8.4.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. ...
- python找出列表list中重复元素
代码 from collections import Countera = [29,36,57,12,79,43,23,56,28,11,14,15,16,37,24,35,17,24,33,15,3 ...
- 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,
题目描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 示 ...
- python练习题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 题目解析: 有一个字符串,长度不定, 要找出不重复字符串的长度,我们可以这么假设,先找到第一个下标,然后从后面拿到元素的下标对 ...
- 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...
- 实验4.1对任意一个一维数组,从中找出数组元素的最大值和最小值并输出 。 要求: 1)数组有10个元素; 2)使用scanf函数实现数组元素的输入,输入前给出必要的提示信息; 3)输出时,首先输出数组
/*SY4.1 题目描述 对任意一个一维数组,从中找出数组元素的最大值和最小值并输出 . 要求: 1)数组有10个元素: 2)使用scanf函数实现数组元素的输入,输入前给出必要的提示信息: 3)输出 ...
- 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。...
给定两个字符串 s 和 t,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" ...
- 找不同(给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。)
给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 示例: 输入: s = "abcd&quo ...
- Leecode:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数
题目 /** * 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. * 示例 ...
最新文章
- 酷派、华为不能打印log解决办法
- Intel汇编语言程序设计课后习题,6.5.5
- ASP绕过防注入的新思路
- 程序员的个人发展注意事项
- pyodbc psutil wmi paramiko
- Visual Editor插件下载、安装问题(Eclipse3.1.1)
- 前端学习(693):for循环案例之求出偶数奇数之和
- C语言数据类型转换详解
- 怎样在计算机中创建d盘,我在电脑D盘内新建了一个文件夹,怎么才能给 – 手机爱问...
- Python3基础3——List列表的增删改和内建函数的用法
- 2018 年程序员求生欲测试题(全国卷)
- Sql server 分解字符串(实现split)
- 出场顺序很重要下一句_孩子爱不爱你,出场顺序很重要
- 从零基础入门Tensorflow2.0 ----五、21交叉特征实战
- 国科大学习资料--矩阵分析与应用(李保滨)--2017年期末考试试卷
- matlab如何找出相似的图,图像相似性搜索的MATLAB实现
- lisp实心圆点怎么画_实心小圆点符号怎么打
- 用批处理的方式压缩文件
- 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/
- 批量导入数据将word文档转换成HTML文档
热门文章
- wincc按钮控制的vb脚本_VB操作wincc脚本心得.docx
- eclipse编辑器未包含main类型_Shopify模版编辑器问题排查及解决办法汇总
- 浙江新增python课程_今年9月起 浙江八年級新增Python編程課程
- (05)VHDL实现分频器
- (55)FPGA条件选择无优先级(if-else)
- (34)Verilog HDL算术运算:加减乘除运算
- oracle+技术面试,Oracle面试问题 技术篇
- 6002.mavlink通过xml生成自定义消息
- qq手机电脑消息同步_手机电脑完全同步!秒杀一切投屏软件和模拟器!
- Makefile语法总结