算法竞赛入门-换低档装置(Kickdown )

13 篇文章 0 订阅
11 篇文章 2 订阅

1、题目

给出两个长度分别为n1,n2且每列高度只为1或者2的长条,需要将它们放入一个高度为3的容器,问容器的最短长度。
输入:
2112112112
2212112
12121212
21212121
2211221122
21212
输出:
10
8
15

2、思路

这题很简单,主要就是判断n1和n2的高度不能超出3
第一步:判断输入的n1和n2的长度
第二步:遍历最短的字符串n2,然后同时遍历n1,如果有不满足的高度出现,则将最短字符串n2头部添加'0' 然后重新开始遍历;

3、代码

package basic.第三章;

import java.util.Scanner;

/**
 * 题目:给出两个长度分别为n1,n2且每列高度只为1或者2的长条,需要将它们放入一个高度为3的容器,问容器的最短长度。
 * 输入:
 * 2112112112
 * 2212112
 * 12121212
 * 21212121
 * 2211221122
 * 21212
 * 输出:
 * 10
 * 8
 * 15
 * 思路:这题很简单,主要就是判断n1和n2的高度不能超出3
 * 第一步:判断输入的n1和n2的长度
 * 第二步:遍历最短的字符串n2,然后同时遍历n1,如果有不满足的高度出现,则将最短字符串n2头部添加'0' 然后重新开始遍历;
 * Created by Administrator on 2018/5/3.
 *
 * @author 春风吹又生
 */
public class Kickdown {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        String n1 = read.nextLine();
        String n2 = read.nextLine();

        if (n1.length() < n2.length()) {
            String temp = n2;
            n2 = n1;
            n1 = temp;
        }
        StringBuilder sb = new StringBuilder(n2);
        char[] one = n1.toCharArray();
        int one_length = n1.length();
        int length = sb.length();
        int i = 0;
        for (; i < length; i++) {
            // 获取最短的第一个
            if (i < one_length) {
                char l_char = one[i];
                char s_char = sb.charAt(i);
                if (l_char == '2' && s_char == '2') {// 如果超出高度
                    sb.insert(0, "0"); //头部添加一个0
                    length = sb.length();
                    i = 0;// 重新遍历
                }
            }
        }

        if (length < one_length) {
            System.out.println(one_length);
        } else {
            System.out.println(length);
        }


    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值