光伏场地建设规划 - 华为OD统一考试(E卷) C++

分别写了前缀和解法和暴力解

题目描述 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源,对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益

输入:
2 5 2 6
1 3 4 5 8
2 3 6 7 1

输出:
4

说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为2,要求场地的发电量大于等于6

输入:
2 5 1 6
1 3 4 5 8
2 3 6 7 1

输出:
3

说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为1,要求场地的发电量大于等于6

输入:
2 5 1 0
1 3 4 5 8
2 3 6 7 1

输出:
10

说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为1,要求场地的发电量大于等于0即可
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int rows,cols,l,minkw;
	cin>>rows>>cols>>l>>minkw;
	int squ[rows][cols];
	for(int i=0;i<rows;i++)
	for(int j=0;j<cols;j++)
	{
		cin>>squ[i][j];
	}
	int cnt=0;
	int sum[rows+1][cols+1];
	for(int i=0;i<=rows;i++)
	sum[i][0]=0;     //初始化 
	for(int j=0;j<=cols;j++)
	sum[0][j]=0;     //初始化 
	for(int i=1;i<=rows;i++)
	{
		for(int j=1;j<=cols;j++)
		{
			sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+squ[i-1][j-1];
		};
	}		
	int ans[rows-l+1][cols-l+1];
	
	for(int i=0;i<rows-l+1;i++)
	{
		for(int j=0;j<cols-l+1;j++)
		{
			ans[i][j]=sum[i+l][j+l]-sum[i][j+l]-sum[i+l][j]+sum[i][j];
	//		cout<<ans[i][j]<<" ";
		}
	//	cout<<endl;
	}

	for(int i=0;i<rows-l+1;i++)
	 for(int j=0;j<cols-l+1;j++)
	  if(ans[i][j]>=minkw) cnt++;
	  
	  
     cout<<cnt;

	
 }

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int rows,cols,l,minkw;
	cin>>rows>>cols>>l>>minkw;
	int squ[rows][cols];
	for(int i=0;i<rows;i++)
	for(int j=0;j<cols;j++)
	{
		cin>>squ[i][j];
	}
	int cnt=0;
	for(int i=l-1;i<rows;i++)
	{
		for(int j=l-1;j<cols;j++)
		{
			int square=0;
			for(int i1=i-l+1;i1<=i;i1++)
			{
				for(int j1=j-l+1;j1<=j;j1++)
				{
				   square+=squ[i1][j1];	
				}
			}
			if(square>=minkw)
			cnt++;
		}
	}
	cout<<cnt;
 } 
#华为od机试#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务