码迷,mamicode.com
首页 > 编程语言 > 详细

贪心算法(发工资)

时间:2015-12-02 22:40:07      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:

发工资咯:)

Problem : 430

Time Limit : 1000ms

Memory Limit : 65536K

description

作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵
但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

input

输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。
n=0表示输入的结束,不做处理。

output

对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

sample_input

3
1 2 3
0

sample_output

4

 

 1 #include<stdio.h>
 2 int main()
 3 {    int n,i,j,num,money,s,temp;    
 4      int y[6]={100,50,10,5,2,1};    
 5      while(scanf("%d",&n)!=EOF && n!=0)    
 6     {        
 7         num=0;        
 8         for(i=0;i<n;i++)        
 9         {            
10             scanf("%d",&money);            
11             for(j=0;j<6;j++)            
12             {                
13                 s=money/y[j];
14                 temp=money%y[j]; 
15                 num+=s;                
16                 if(temp==0) break;               
17                  money=temp;            
18             }        
19         }        
20             printf("%d\n",num);    
21        }
22 }

 

什么是贪心算法呢?所谓贪心算法是指,在对问题求解时,总是做出在当前看来最好的选择。也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。

贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题都能产生整体最优解或整体最优解的近似解。

贪心算法的基本思路如下:

1.建立数学模型来描述问题。

2.把求解的问题分成若干个子问题。

3.对每个子问题求解,得到每个子问题的局部最优解。

4.把每个子问题的局部最优解合成为原来问题的一个解。

实现该算法的过程:

从问题的某一初始状态出发;

while 能朝给定总目标前进一步 do

求出可行解的一个解元素;

由所有解元素组合成问题的一个可行解;

贪心算法(发工资)

标签:

原文地址:http://www.cnblogs.com/nefu929831238/p/5014207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!