第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>

using namespace std;

int cnt,temp;
int n,m,K;
int a[505][505];
int pre[505][505];//二维前缀和



void sol()
{
	cin>>n>>m>>K;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=m;++j)
		{
			cin>>a[i][j];
			pre[i][j]=a[i][j]+pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1];
		}
	}
	int limit;//等到第四层循环时,在k行l列时超过K,记录下其l值。当i,j不变,k为k+1行时,再次达到l时一定会再次超过K,所以进行剪枝
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=m;++j)
		{
			limit=m;
			for(int k=i;k<=n;++k)
			{
				for(int l=j;l<=m&&l<=limit;++l)
				{
					temp=pre[k][l]-pre[i-1][l]-pre[k][j-1]+pre[i-1][j-1];
					if(temp<=K)++cnt;
					else {
						limit=l;
						break;
					}
				}
			}
		}
	}
	
    cout<<cnt<<endl;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	sol();
}
相关推荐
ShineWinsu2 小时前
对于C++:类和对象的解析—下(第二部分)
c++·面试·笔试·对象··工作·stati
2013092416272 小时前
1968年 Hart, Nilsson, Raphael 《最小成本路径启发式确定的形式基础》A* 算法深度研究报告
人工智能·算法
如何原谅奋力过但无声2 小时前
【力扣-Python-滑动窗口经典题】567.字符串的排列 | 424.替换后的最长重复字符 | 76.最小覆盖子串
算法·leetcode
BHXDML3 小时前
第七章:类与对象(c++)
开发语言·c++
玄冥剑尊3 小时前
贪心算法进阶
算法·贪心算法
玄冥剑尊3 小时前
贪心算法深化 I
算法·贪心算法
52Hz1183 小时前
力扣73.矩阵置零、54.螺旋矩阵、48.旋转图像
python·算法·leetcode·矩阵
BHXDML4 小时前
第一章:线性回归& 逻辑回归
算法·逻辑回归·线性回归
yyf198905254 小时前
C++ 跨平台开发的挑战与应对策略
c++
iAkuya4 小时前
(leetcode)力扣100 二叉搜索树种第K小的元素(中序遍历||记录子树的节点数)
算法·leetcode·职场和发展