阿里春招模拟笔试题-Android-火柴拼出最大的数字

题目描述

使用火柴组成一个最大的数字, 规定:
可组成的数字  1   2   3   4   5   6   7   8   9
所需火柴数量  2   5   5   4   5   6   3   7   6
给定火柴总数m, 组成n位数字, 输出可以组成的最大值. 如果不能组成最大的数字, 输出0

题目要求组成最大值,可知所需火柴数量相同的数字中只需要最大的即可,所以真正需要的是:

所需数字:9   8   7   5   4   1
火柴数量:6   7   3   5   4   2

解题思路

采用贪心法从低位逐一确认最优解(数字最大)。
该位的最优解要满足剩下的火柴数量恰好足够n-i位使用(i为已确定的位数)。
那什么情况没有恰好满足剩下的n-i位使用呢?

  1. m < 2*n, n位火柴使用数量最小的数,火柴不够用。
  2. m > 7*n, n位火柴使用数量最大的数,火柴太多。

Code

import java.util.Scanner;

public class Main {
    
    static String maxSum(int m, int n) {
        final StringBuilder sb = new StringBuilder();

        //二维数组,表示数字和火柴数量
        int[][] a = new int[][]{{9, 8, 7, 5, 4, 1},{6, 7, 3, 5, 4, 2}};
        // 从低位构建每一位
        while (n > 0) {
            int i = -1;
            for (int j = 0; j < a[0].length; j++) {
                //可构成每位最优解的条件
                if (m - a[1][j] >= (n - 1) * 2 && m - a[1][j] <= (n - 1) * 7) {
                    //记录最优解位置
                    i = j;
                    //更改剩余火柴数
                    m -= a[1][j];
                    n--;
                    break;
                }
            }
            //i == -1说明最优解条件不成立
            if (i == -1) return "0";
            sb.append(a[0][i]);
        }
        return sb.toString();
    }
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();
        
        System.out.println(maxSum(m, n));
    }
}

样例

输入:

20
7

输出:

9771111

欢迎提出更多的解法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这个不错分享给大家,从扣上看到的,就转过来了 《电脑专业英语》 file [fail] n. 文件;v. 保存文...
    麦子先生R阅读 6,620评论 5 24
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,347评论 0 9
  • 我的假期 竟然比工作日还要醒的早 天都没全亮 白哆哆就开始在我床边蹭 撒娇、小声哼哼 我不得不睁开眼睛 摸了摸它的...
    哆啦A梦的世界观阅读 260评论 2 1
  • 马路边躺着一只黑色鸷鸟,已经死去,它的翅膀炫耀般地张开,而头已经歪斜在一边。死亡出色的标本。我想起那些嵌在人类旗帜...
    William王汉阅读 317评论 1 1
  • 137累积法【子扬妈妈】第133天【20180903】 读经内容1.易经系卦传第一节、第二节;2.笠翁对韵上卷四支...
    杨凤娟_5e5c阅读 215评论 0 0