叠积木【Java】

本文探讨了一个使用Java解决的积木叠放问题。题目要求积木宽高相等,长度不等,每层长度需一致。输入为积木长度,输出为最大可行层数。通过排序积木长度并分析规律,最长积木可以单独或与最短积木拼接用于搭建,从而找到最优解。
摘要由CSDN通过智能技术生成

叠积木【Java】

积⽊宽⾼相等,长度不等,每层只能放⼀个或拼接两个积⽊,要求每层长度相等,求最⼤层数。

【输入描述】

给定积⽊的长度,以空格分隔,例如:3 6 6 3。

【输出描述】

如果可以搭建,返回最⼤层数,如果不可以返回-1。

【示例一】

  • 输入

    3 6 6 3
    
  • 输出

    3
    

【示例二】

  • 输入

    1 4 2 3 6
    
  • 输出

    -1
    

【解题思路】

  1. 读懂题目的要求,积木每一层只能是1块,或者2块拼接
  2. 必须每一层的长度相等,否则算为不可搭建,则输出-1
  3. 分析规律:将积木长度进行排序后,最长的积木只能两种情况:1、单独一块去搭建;2、跟最小长度那一块去搭建

【代码】

import java.util.LinkedList;
import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
   
        Scanner input = new Scanner(System.in);
        String s = input.nextLine(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值