1102.最小子面积矩阵
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1102.最小子面积矩阵相关的知识,希望对你有一定的参考价值。
- 题目描述:
-
一个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
#include<iostream> using namespace std; int main(){ int n,m,k; while(cin>>n>>m>>k) { int ans=10001; int a[101][101]={0}; int i,j,p,q; for(i=0;i<n;i++){ for(j=0;j<m;j++){ cin>>a[i][j]; } } int sum=0; for(i=0;i<n;i++){ for(j=0;j<m;j++){ for(p=i;p<n;p++){ for(q=j;q<m;q++){ int temp=(i-p+1)*(j-q+1); if(temp>ans) continue; sum=0; for(int c=p;c<=i;c++){ for(int d=q;d<=j;d++){ sum+=a[c][d]; } } if(sum>k && ans>temp) { ans=temp; } } } } } if(ans==10001) cout<<"-1"<<endl; else cout<<ans<<endl; } return 0; }
以上是关于1102.最小子面积矩阵的主要内容,如果未能解决你的问题,请参考以下文章