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)
    		}
    
    	}
    }
    

      

  • 相关阅读:
    MT4 图表上设置字符
    MC- 交易并设置止损
    MC- 挂单STOP交易
    MC-设置 止盈
    MC 跨周期 画线
    美版MC 使用
    改变和恢复view的方向
    app被Rejected 的各种原因翻译。这个绝对有用。
    更改navigationController push和pop界面切换动画
    线程访问外部数据
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12373124.html
Copyright © 2011-2022 走看看