光伏场地建设规划 - 华为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机试#