js算法(一)字节笔试的一个硬币问题

从网上看的一个字节算法问题

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

输入描述:
一行,包含一个数N。
输出描述:
一行,包含一个数,表示最少收到的硬币数。
示例1输入输出示例仅供调试,后台判题数据一般不包含示例
输入
200
输出
17
hftns-lhlnru nsrln ratlrrm

真棒

https://www.csdn.net/tags/MtTaEgysODI5NjUwLWJsb2cO0O0O.html

这里他原文用的是递归

而我用了一个for循环的四层嵌套

aa

代码如下

var N=window.prompt("N")
        function getNumber(){
            var x=1
            var y=1
            var z=1
            var q=1
            var arr=[]
            var num1=parseInt(1024-N)
            var num2=parseInt(256-0.25*N)
            var num3=parseInt(64-0.0625*N)
            var num4=parseInt(16-0.015625*N)
            var total=parseInt(1024-N)
           for(x=0;x<=num1;x++){
               for(y=0;y<=num2;y++){
                   for(z=0;z<=num3;z++){
                       for(q=0;q<=num4;q++){
                           var num=x+4*y+16*z+64*q
                           if(parseInt(1024-N)===(num)){
                                if(total>x+y+z+q){
                                total=x+y+z+q
                            }
                           }    
                       }
                   }
               }
           }
           console.log(total)
        }
        getNumber()

  

 

posted @ 2022-04-27 15:29  whiteWaiter  阅读(81)  评论(0编辑  收藏  举报