zoukankan      html  css  js  c++  java
  • 零钱相加最少多少张

    package main
    
    import "fmt"
    
    func main() {
    
    	/*
    	给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。
    	如果没有任何一种硬币组合能组成总金额,返回 -1。
    
    	示例 1:
    	输入: coins = [1, 2, 5], amount = 11
    	输出: 3
    	解释: 11 = 5 + 5 + 1
    	*/
    
    	/*
    	1.先把最大的数找出来,累加,超了就找小于自己的数
    	2.再继续找倒数第二大的数,累加,超了就找小于自己的数,。。。
    	*/
    
    	coins := []int{1, 2, 5}
    	amonut := 100 //20次
    
    	//标志位
    	flag := 0
    	//总金额
    	sum := 0
    
    	//5块
    	for amonut > sum {
    		max_sum := coins[2]
    		sum += max_sum
    		flag += 1
    		if amonut < sum {
    			//如果超过了就减去一次最大数
    			sum -= max_sum
    			flag -= 1
    			break
    		} else if amonut == sum {
    			fmt.Println(flag)
    		}
    	}
    
    	//3块
    	//减去一次最大数的sum肯定小于amonut
    	for amonut > sum {
    		max_sum_2 := coins[1]
    		sum += max_sum_2
    		flag += 1
    		if amonut < sum {
    			sum -= max_sum_2
    			flag -= 1
    			break
    		} else if amonut == sum {
    			fmt.Println(flag)
    		}
    
    	}
    
    	//1块
    	//减去一次 次 大数的sum肯定小于amonut
    	for amonut > sum {
    		max_sum_3 := coins[0]
    		sum += max_sum_3
    		flag += 1
    		if amonut < sum {
    			sum -= max_sum_3
    			flag -= 1
    			break
    		} else if amonut == sum {
    			fmt.Println(flag)
    		}
    
    	}
    }
    

      

  • 相关阅读:
    HTML当中特殊字符的表示
    溢出文本用“...”代替
    【转】图标字体化浅谈
    字体在网页中画ICON图标
    图片轮播
    js获取网页屏幕可视区域高度
    MVC入口程序 | 简单调用及实例化
    初学者对于MVC架构模式学习与理解
    PHP初学习笔记(2015/4/8)
    linux常用20命令 --转载
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12373124.html
Copyright © 2011-2022 走看看