蓝桥2022c++B组 F 统计子矩阵

蓝桥2022c++B组 F 统计子矩阵,第1张

最暴力的做法: 

#include
using namespace std;
int a[505][505]={0};
long long q[505][505]={0}; 
int main()
{
	int n,m,k;
	cin>>n>>m>>k;
	int i,j,b,c,ans=0;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			cin>>a[i][j];
			q[i][j]=q[i][j-1]+q[i-1][j]-q[i-1][j-1]+a[i][j];//构建前缀和数组 
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)//左上角 
		{
			for(b=i;b<=n;b++)
			{
				for(c=j;c<=m;c++)//右下角 
				{
					if(q[b][c]-q[i-1][c]-q[b][j-1]+q[i-1][j-1]<=k)
						ans++;
				}
			}
		}
	 } 
	 cout<

看了大佬之后的做法:

#include
using namespace std;
int a[505][505]={0};
long long q[505][505]={0}; 
int main()
{
	int n,m,k;
	cin>>n>>m>>k;
	int i,j,b,c,ans=0;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			cin>>a[i][j];
			q[i][j]=q[i][j-1]+q[i-1][j]-q[i-1][j-1]+a[i][j];//构建前缀和数组 
		}
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)//左上角 
		{
			for(b=i;b<=n;b++)
			{
				c=m;
				while(q[b][c]-q[i-1][c]-q[b][j-1]+q[i-1][j-1]>k)  c--;
				if(c 

 大佬2022年蓝桥杯软件类省赛 C/C++ B组 解析 - StelaYuri - 博客园 (cnblogs.com)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/578221.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)