世界已冷酷至极, 让我们携手前行。
自助收录

2023年华为OD机考真题:光伏场地建设规划

算法刷题1年前 (2023)更新 江南白衣
390 0 0
2023年华为OD机考真题:光伏场地建设规划

全网最全面的华为OD机试真题汇总,100%原题题库,不需要开会员即可查看全部内容,更多考题请查看真题库。

真题库:https://www.yuque.com/codernav.com/od

题目:光伏场地建设规划
时间限制:1s 空间限制:256MB 限定语言:不限
题目描述:
祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源。对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。
输入描述:
第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长,最低要求的发电量
之后每行为调研区域每平方公里的发电量
例如,输入为:
2 5 2 6
1 3 4 5 8
2 3 6 7 1
表示调研的区域大小为长2宽5的矩形,我们要建设的电站的边长为2,建设电站最低发电量为6
输出描述:
输出为这样的区域有多少个
上述输入长宽为2的正方形满足发电量大于等于6的区域有4个。
则输出为:
4
补充说明:
其中 被调研的区域的长宽均大于等于1,建设电站的边长大于等于1,任何区域的发电量大于等于0
示例1
输入:
2 5 2 6
1 3 4 5 8
2 3 6 7 1
输出:
4
说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为2,要求场地的发电量大于等于6
示例2
输入:
2 5 1 6
1 3 4 5 8
2 3 6 7 1
输出:
3
说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为1,要求场地的发电量大于等于6
示例3
输入:
2 5 1 0
1 3 4 5 8
2 3 6 7 1
输出:
10
说明:
输入长为2,宽为5的场地,建设的场地为正方形场地,边长为1,要求场地的发电量大于等于0即可
解题思路:
通过四层for循环来获取每个发电区域的发电量,再判断发电量是否满足最低要求发电量。(不要担心时间复杂度,这是满分答案)

代码实现一:

package com.codernav.demo.hwod.exam;

import java.util.Scanner;

/**
 * @title 光伏场地建设规划
 * @Description 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;
 * 整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源。
 * 对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。
 * 我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。
 * @Author 开发者导航
 * @website https://codernav.com
 * @date 2023/5/14
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int row = sc.nextInt();     //长
        int col = sc.nextInt();     //宽
        int width = sc.nextInt();   //电站边长
        int pow = sc.nextInt();     //最低要求的发电量

        int[][] region = new int[row][col];     //区域
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                region[i][j] = sc.nextInt();
            }
        }

        int res = 0;
        for (int i = 0; i <= row - width; i++) {
            for (int j = 0; j <= col - width; j++) {
                int count = 0;  //电站区域的发电量
                for (int l = i; l < i + width; l++) {
                    for (int m = j; m < j + width; m++) {
                        count += region[l][m];
                    }
                }
                if (count >= pow) {   //发电量大于等于最低要求的发电量则满足
                    res++;
                }
            }
        }
        System.out.println(res);
    }
}

代码实现二:

package com.codernav.demo.hwod.exam;

import java.util.Scanner;

/**
 * @title 光伏场地建设规划
 * @Description 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;
 * 整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源。
 * 对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。
 * 我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。
 * @Author 开发者导航
 * @website https://codernav.com
 * @date 2023/5/14
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String[] split = line.split("\\s+");
        int row = Integer.parseInt(split[0]);
        int col = Integer.parseInt(split[1]);
        int len = Integer.parseInt(split[2]);
        int wh = Integer.parseInt(split[3]);
        int result = 0;
        int[][] arr = new int[row][col];
        for (int i = 0; i < row; i++) {
            String nextLine = scanner.nextLine();
            String[] splitFi = nextLine.split("\\s+");
            for (int j = 0; j < col; j++) {
                int aa = Integer.parseInt(splitFi[j]);
                arr[i][j] = aa;
            }
        }
        for (int i = 0; i + len <= row; i++) {
            for (int j = 0; j + len <= col; j++) {
                int sum = 0;
                for (int k = i; k < i + len; k++) {
                    for (int l = j; l < j + len; l++) {
                        sum = sum + arr[k][l];
                    }
                }
                if (sum >= wh) {
                    result = result + 1;
                }
            }
        }
        System.out.println(result);
    }
}

 

© 版权声明

相关文章

开发者导航新手教程

暂无评论

暂无评论...