hdu1353 小暴力
生活随笔
收集整理的這篇文章主要介紹了
hdu1353 小暴力
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 題意是給你一個數,然后你有0.25,0.1,0.05,0.01的四種面額若干,讓你求出最小的錢幣紙張。
思路:
? ? ? 題意是給你一個數,然后你有0.25,0.1,0.05,0.01的四種面額若干,讓你求出最小的錢幣紙張。
思路:
? ? ? 對于這種題目要自己觀察兩樣東西,一個是四種面額之間的關系,兩一個就是數據范圍,這個題目雖然說每個面額最多100張,但是自己算算根本不會全都達到這個數目,最大的總金額是5元=20*0.25=50*0.1,說到這懂了吧,直接暴力就行了,對于這樣的題目,如果總金額不是5元,是更大的數怎么辦呢?之前見過一個暴力過不去的,但是他給的四個貨幣是 10 5 1 0.1 這四個,前面的是后面的任意一個的整數倍,這樣的我們可以直接貪心去弄,如果是求最小就從大到小,能用就用,如果是求最多貨幣,那么還是從大到小,能不用就不用。
#include<stdio.h> int main () {int a ,b ,c ,d ,aa ,bb ,cc ,dd ,min;double num;while(~scanf("%lf %d %d %d %d" ,&num ,&a ,&b ,&c ,&d)){int t = int(num / 0.25 + 1);if(a > t) a = t;t = int(num/0.1 + 1);if(b > t) b = t;aa = bb = cc = dd = -1;min = 1000000000;for(int i = 0 ;i <= d && aa == -1;i ++)for(int j = 0 ;j <= c && aa == -1;j ++)for(int k = 0 ;k <= b && aa == -1;k ++)for(int w = 0 ;w <= a && aa == -1;w ++){if(i * 0.01 + j * 0.05 + k * 0.1 + w * 0.25 == num){if(min > i + j + k + w){min = i + j + k + w;aa = w ,bb = k ,cc = j ,dd = i;}}}aa == -1 ? puts("NO EXACT CHANGE"):printf("%d %d %d %d\n" ,aa ,bb ,cc ,dd);}return 0; }總結
以上是生活随笔為你收集整理的hdu1353 小暴力的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu4974 简单题
- 下一篇: hdu4302 set或者线段树