【华为校招】【校招】【Java】叠积木
题目描述
给出一个列表如[[6,7,],[5,4],[3,2]],表示木块的长和宽,当木块的长和宽不大于另个木块的长和宽时,就可以放在上面,此外数组还可以左右翻转。求最多能搭多少层。
输入描述
一个二维数组,里面是每个积木的长和宽,可以左右翻转。
输出描述
最多能搭多少层。
样例
输入
[[5,4],[6,3],[6,7],[6,6],[4,6]]
输出
4
思路分析:
首先对输入的积木进行处理,统一大的做长放第一个位置,小的做宽放第二个位置。
自定义排序,所有积木降序排,长度降序,相同则宽度降序。
动态规划求最大。定义一个 dp 数组,dp[i] 表示如果积木为 i 时,最大积木层数。j 表示前 i - 1 个积木,如果前 i - 1 个积木中宽度大于当前积木,dp[i]就等于两者最大值,则状态转移方程:
if (nums[j][1] >= nums[i][1]) {dp[i] = Math.max(dp[i], dp[j] + 1); // 当前值,或从0到i-1中找到宽大于当前积木的
}
public class BuildingBlocks {public static void main(String[] args) {Scanner in = new Scanner(System.in);String str = in.nextLine();// 去掉字符串的所有括号,这里注意下字符串的解析str = str.replaceAll("\\[", "");str = str.replaceAll("\\]", "");str = str.replaceAll("\\s+", ""); // 去掉所有空格String[] str1 = str.split(",");int[][] nums = new int[str1.length / 2][2];for (int i = 0; i < nums.length; i++) {int num1 = Integer.parseInt(str1[2 * i]);int num2 = Integer.parseInt(str1[2 * i + 1]);nums[i][0] = Math.max(num1, num2); // 大的为长度nums[i][1] = Math.min(num1, num2); // 小的为宽度}// 先对积木自定义排序,按长度降序,相同按宽度降序Arrays.sort(nums, (o1, o2) -> o1[0] == o2[0] ? o2[1] - o1[1] : o2[0] - o1[0]);// 动态规划,dp[i] 表示如果积木为 i 时,最大积木嵌套数int[] dp = new int[nums.length];Arrays.fill(dp, 1); // 初始化为1int max = 1;for (int i = 1; i < nums.length; i++) {for (int j = 0; j < i; j++) {if (nums[j][1] >= nums[i][1]) {dp[i] = Math.max(dp[i], dp[j] + 1); // 当前值,或从0到i-1中找到宽大于当前积木的}}max = Math.max(dp[i], max);}System.out.println(max);}
}
【华为校招】【校招】【Java】叠积木相关推荐
- 华为od机试: 叠积木
import java.util.Arrays; import java.util.Scanner;public class Solution_回溯 {public static void main( ...
- 华为暂缓校招,解散校招群,冲上热搜,引发应届生强烈不满!
来自:非著名程序员 最近,华为冲上了微博热搜榜,原因就是华为疑似暂缓 2023 届校招. 据传 11 月 16 日下午开始,在脉脉.微博.小红书等社交平台上,不少用户爆料华为暂缓 2023 届校园招聘 ...
- 华为2021校招【软件开发岗】笔+面试总结
华为2021校招[软件开发岗]笔+面试总结 文章目录 华为2021校招[软件开发岗]笔+面试总结 个人情况 一.机试 二.综合测试 三.专业面试一 四.专业面试二 五.业务主管面试 六.总结 个人情况 ...
- 2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢)
2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢) 分类: 校招笔经 or 面经2013-09-18 16:19 674人阅读 经过了 叫人伤感的 阿里,我决定去 这些小公司找找 信心,今天 ...
- 上海汉得校招笔试-Java
上海汉得校招笔试-Java 一.单项选择题(2分/题,共20分) 二.多项选择题 (4分/题,共20分) 三.填空题(4分/题,共20分) 四.简答题(5分/题,共20分) 五.编程题(20分) 一. ...
- 华为暂缓校招,冲上热搜,引应届生不满
大家好,我是校长. 昨天傍晚,华为冲上了微博热搜榜,原因就是华为疑似暂缓 2023 届校招. 据传 11 月 16 日下午开始,在脉脉.微博.小红书等社交平台上,不少用户爆料华为暂缓 2023 届校园 ...
- 知己知彼,百战不殆,阿里华为电信大厂Java程序员秋招面经大合集(含更新)
最近整合收集了阿里华为等大厂java程序员面经,看完你就明白为啥别人都能offer拿到手软了,文末含资料整合收集PDF,需要可自取 阿里内推 一面(电话) 听说你有博客,博客里大概有什么内容? 项目介 ...
- 刷题记录(NC235611 牛牛国的战争,NC23803 DongDong认亲戚,NC235622 叠积木)
NC235611 牛牛国的战争 题目链接 关键点 1.因为要在能击败所有敌军的基础下,求存活最多的数量,那么我们可以对敌军的防御力从大到小排列,对于友军的攻击力从大到小排列,这样遍历一次敌军,将所有可 ...
- 华为java 上机_华为校园招聘Java上机笔试题
华为校园招聘Java上机笔试题 1.将大写字母转换成其对应小写字母后的第五个字母,大于z的从头开始数. 2.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数 ...
- java oj题及答案_华为OJ答案(java版)题目2
华为OJ&答案(java版) 1. 功能:等差数列 2,5,8,11,14.... 输入:正整数N >0 输出:求等差数列前N项和 返回:转换成功返回 0 ,非法输入与异常返回-1 pu ...
最新文章
- VUE的本地应用-V- html
- R语言广义线性模型泊松回归(Poisson Regression)模型
- 四十而不惑——DNA测序技术的前世今生和未来
- 我是怎样成长为系统架构师的
- pku 1925 Spiderman DP
- P4051-[JSOI2007]字符加密【SA】
- [Kaggle] Housing Prices 房价预测
- 利用Facebook提供的免费工具进行宣传
- Redis和Memcached的区别详解
- redis事务乐观锁,watch
- 2020 Pwn2Own东京大赛落幕,Master of Pwn 诞生
- 【动态规划笔记】背包问题:搬寝室
- CentOS 5.5 安装VirtualBox
- 管螺纹如何标注_外螺纹、内螺纹的画法,非标准螺纹的画法,你还会画吗?
- 修改整个app的字体
- 大数据最核心的价值是什么?
- Android app crash的问题排查思路与反思
- Node.js 删除本地文件/文件夹
- Java 11 JDK
- 2022电工(初级)考试试题及答案