美文网首页
今日头条2019年暑期实习第一批笔试题货币找零

今日头条2019年暑期实习第一批笔试题货币找零

作者: zhouwaiqiang | 来源:发表于2019-03-19 12:22 被阅读0次

    题目描述

    Z国的货币系统包含面值1元、4元、6元、64元共计4种硬币,以及面值1024元的纸币,现在小Y使
    用1024元的纸币购买力一种价值为N(0<N<1024)的商品,请问最少他会收到多少硬币?
    

    输入描述

    一行,包含一个数N
    

    输出描述

    一行,包含一个数,表示最少收到的硬币数
    

    示例1输入:

    200
    

    示例1输出:

    17
    

    解题思路

    1. 这道题属于典型的入门级动态规范,回顾一下动态规范三个条件,最优子结构,转移方程以及边界条件
    2. 现在假设我们要求的结果是F(n),其中n为我们要找零的钱,根据钞票种类,只有1/4/16/64这四种,那么如果要F(n)最小,那么最优子结构就应该是F(n)=min{F(n-1, F(n-4), F(n-16), F(n-64)}+1,以此递推到边界为1或者2或者3或者4的时候,即可终止得到边界条件
    3. 然后我们将递推反过来叠加式求解,可以声明一个数组为N+1(数组下标从0开始,将下标和金额对应),写入初始条件,依次往上叠加求解,就可以得到结果
    

    解题代码

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int expense = sc.nextInt();
            int re = 1024-expense;
            if (re==0) {
                System.out.println(0);
                return;
            }
            if (re==1) {
                System.out.println(1);
                return;
            }
            if (re==2) {
                System.out.println(2);
                return;
            }
            if (re==3) {
                System.out.println(3);
                return;
            }
            if (re==4) {
                System.out.println(1);
                return;
            }
            int[] result = new int[re+1];
            result[0]=0;
            result[1]=1;
            result[2]=2;
            result[3]=3;
            result[4]=1;
            for(int i=5; i<=re; i++) {
                if(i=16 || i=64) result[i] = 1;
                else if(i>16 && i<64) result[i] = Math.min(Math.min(result[i-1],result[i-4]),result[i-16])+1;
                else if(i>64) result[i]=Math.min(Math.min(result[i-1], result[i-4]), Math.min(result[i-16], result[i-16]))+1;
                else result[i]=Math.min(result[i-1], result[i-4]);
            }
            system.out.println(result[re]);
        }
    }
    

    相关文章

      网友评论

          本文标题:今日头条2019年暑期实习第一批笔试题货币找零

          本文链接:https://www.haomeiwen.com/subject/hedgmqtx.html