Java笔试——2021届秋招编程题汇总

1. 硬币找零,最少多少张纸币

描述:有1,5,10,50,100元,分别有:a、b、c、d、e张纸币。
若需要支付k元,最少需要多少张纸币能找零,若无解则输出-1

package kdxf;

import java.util.HashMap;
import java.util.Scanner;

public class Test01 {
   
    static HashMap<Integer,Integer> data = new HashMap<>();
    static int res = Integer.MAX_VALUE;
    static int[] num = {
   1,5,10,50,100};
    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        for(int i=0;i<5;i++){
   

            int p = sc.nextInt();
            data.put(num[i],p);
        }
        int sum = sc.nextInt();
        dfs(sum,0,4);
        System.out.println(res==Integer.MAX_VALUE?-1:res);
    }

    public static void dfs(int sum,int count,int start){
   
        if (sum ==0 ){
   
            res = Math.min(res,count);
            return;
        }else{
   
            for(int i=start;i>=0;i--){
   
                if (num[i]<=sum&&data.get(num[i])!=0){
   
                    int money = data.get(num[i]);
                    int flag = 0;
                    if (money*num[i]<=sum){
   
                        count+=money;
                        data.put(num[i],0);
                        flag = sum - money*num[i];
                    }else{
   
                        int q = sum/num[i];
                        count+=q;
                        data.put(num[i],data.get(num[i])-q);
                                flag = sum - q*num[i];
                    }

                    dfs(flag,count,start-1);
                    return;
                }
            }
        }
    }
}

运行结果:
在这里插入图片描述

2. 将序列排序

描述:给出一个数字序列,需要输出排序过程

package kdxf;

import java.util.Scanner;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值