【华为OD机考 统一考试机试】分配土地
题目描述
从前有个村庄,村民们喜欢在各种田地上插上小旗子,旗子上标识了各种不同的数字。
某天集体村民决定将覆盖相同数字的最小矩阵形的土地分配给村里做出巨大贡献的村民,请问此次分配土地,做出贡献的村民种最大会分配多大面积?
输入描述
第一行输入 m 和 n,
- m 代表村子的土地的长
- n 代表土地的宽
第二行开始输入地图上的具体标识
输出描述
此次分配土地,做出贡献的村民种最大会分配多大面积
备注
旗子上的数字为1~500,土地边长不超过500
未插旗子的土地用0标识
用例1
输入
3 3 1 0 1 0 0 0 0 1 0
输出
9
说明
土地上的旗子为1,其坐标分别为(0,0),(2,1)以及(0,2),为了覆盖所有旗子,矩阵需要覆盖的横坐标为0和2,纵坐标为0和2,所以面积为9,即(2-0+1)*(2-0+1)= 9
用例2
输入
3 3 1 0 2 0 0 0 0 3 4
输出
1
说明
由于不存在成对的小旗子,故而返回1,即一块土地的面积。
Java
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 读取土地的长和宽 int m = scanner.nextInt(); int n = scanner.nextInt(); // 创建一个二维数组来存储土地上的标识 int[][] land = new int[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { land[i][j] = scanner.nextInt(); } }
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
华为OD机试刷题 文章被收录于专栏
华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。