【华为OD机试真题 JAVA】书籍叠放问题

   标题:书籍叠放问题 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限

        书籍的长、宽都是整数对应 (l,w)。如果书A的长宽度都比B长宽大时,则允许将B排列放在A上面。

        现在有一组规格的书籍,书籍叠放时要求书籍不能做旋转,请计算最多能有多少个规格书籍能叠放在一起。

输入描述:

  输入: books = [[20,16],[15,11],[10,10],[9,10]]

  说明:总共4本书籍,第一本长度为20宽度为16;第二本书长度为15宽度为11,依次类推,最后一本书长度为9宽度为10.

输出描述:

 输出: 3

 说明: 最多3个规格的书籍可以叠放到一起,

 从下到上依次为: [20,16],[15,11],[10,10]

  示例1

  输入

  [[20,16],[15,11],[10,10],[9,10]]

  输出

  3

  说明

  说明: 最多3个规格的书籍可以叠放到一起, 从下到上依次为: [20,16],[15,11],[10,10]

题解:

import java.util.*;

public class Main_1 {
    public static void main(String
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
题目描述: 快递员需要将 $n$ 个快递投递到 $m$ 个快递柜中,第 $i$ 个快递柜有 $a_i$ 个格子。快递员需要将每个快递投递到一个格子中,且每个格子只能存放一个快递。如果一个快递柜的所有格子都已经存放了快递,则快递员需要将快递存放到下一个有空格的快递柜中。请你编写一个算法,输出每个快递应该存放的位置。 输入: - 第一行包含两个整数 $n$ 和 $m$,表示快递的数量和快递柜的数量。 - 第二行包含 $m$ 个整数 $a_1,a_2,\ldots,a_m$,表示每个快递柜的格子数量。 输出: - 输出包含 $n$ 行,每行一个整数,表示对应快递的存放位置。 样例: 输入: ``` 5 3 2 3 1 ``` 输出: ``` 1 2 1 2 3 ``` 解释:快递 $1$ 存放在第 $1$ 个快递柜的第 $1$ 个格子中;快递 $2$ 存放在第 $2$ 个快递柜的第 $1$ 个格子中;快递 $3$ 存放在第 $1$ 个快递柜的第 $2$ 个格子中;快递 $4$ 存放在第 $2$ 个快递柜的第 $2$ 个格子中;快递 $5$ 存放在第 $3$ 个快递柜的第 $1$ 个格子中。 Java 实现: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 快递数量 int m = scanner.nextInt(); // 快递柜数量 int[] a = new int[m]; // 每个快递柜的格子数量 for (int i = 0; i < m; i++) { a[i] = scanner.nextInt(); } int[] ans = new int[n]; // 存放位置 int idx = 0; // 当前快递柜下标 for (int i = 0; i < n; i++) { while (a[idx] == 0) { // 当前快递柜格子已满,找到下一个未满的快递柜 idx = (idx + 1) % m; } ans[i] = idx + 1; // 存放位置为当前快递柜下标加一 a[idx]--; // 当前快递柜剩余格子数减一 } for (int i = 0; i < n; i++) { System.out.println(ans[i]); } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言程序plus

你的鼓励将是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值