标签:space 输入 turn 子矩阵 return lse using c++ 输出
一个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; }
标签:space 输入 turn 子矩阵 return lse using c++ 输出
原文地址:https://www.cnblogs.com/bernieloveslife/p/9736483.html