博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分钱单算法
阅读量:7219 次
发布时间:2019-06-29

本文共 1528 字,大约阅读时间需要 5 分钟。

分钱单算法

1.有6个员工,每个人的工资是2000到5000不等,并且有零头;

【1】2104
【2】2320
【3】3450
【4】4520.1
【5】4876.3
【6】4995.9
2.财务发现金,现求出共要发多少现金,100元、50元、20元、10元、5元、2元、1元、5角、2角、1角分别为多少?(分不记)
3.规则要求,按大面额现金最优发放。

具体的算法:

using
 System;
using
 System.Collections.Generic;
using
 System.Text;
namespace
 分钱单
{
    
class
 Program
    
{
        
//
人民币民面额
        
static
 
float
[] 面额 
=
 
new
 
float
[] 
{ 100f, 50f, 20f, 10f, 5f, 2f, 1f, 
0.5f
0.2f
0.1f
 }
;
        
static
 
void
 Main(
string
[] args)
        
{
            
float
[] 工资单 
=
 
new
 
float
[] 
{ 2104f, 2320f, 3450f, 
4520.1f
4876.3f
4995.9f
 }
;
            
int
[] 面额计数 
=
 分钱单计算(工资单);
            
float
 总金额 
=
 总金额计算(工资单);
            
for
 (
int
 i 
=
 
0
; i 
<
 面额计数.Length; i
++
)
                Console.WriteLine(
"
面额{0}元 共 {1}张
"
, 面额[i], 面额计数[i]);
            Console.WriteLine(
"
共{0}元
"
, 总金额);
            Console.WriteLine(
"
第一个人的工资:{0} 
"
, 工资单[
0
]);
            面额计数 
=
 分钱单计算(
new
 
float
[] 
{ 工资单[
0
] }
);
            
for
 (
int
 i 
=
 
0
; i 
<
 面额计数.Length; i
++
)
                Console.WriteLine(
"
面额{0}元 共 {1}张
"
, 面额[i], 面额计数[i]);
            Console.ReadLine();
        }
        
static
 
int
 floatHelper(
float
 f)
        
{
            
return
 
int
.Parse((f 
*
 
100
).ToString());
        }
        
static
 
int
[] 分钱单计算(
float
[] 金额)
        
{
            
int
[] 面额计数器 
=
 
new
 
int
[] 
0
0
0
0
0
0
0
0
0
0
 }
;
            
foreach
 (
float
 tm 
in
 金额)
            
{
                
int
 iTm 
=
 floatHelper(tm);
                
while
 (iTm 
>
 
0
)
                    
for
 (
int
 i 
=
 
0
; i 
<
 面额.Length; i
++
)
                        
if
 (iTm 
>=
 floatHelper(面额[i]))
                        
{
                            iTm 
-=
 floatHelper(面额[i]);
                            面额计数器[i] 
+=
 
1
;
                            
break
;
                        }
            }
            
return
 面额计数器;
        }
        
static
 
float
 总金额计算(
float
[] 金额)
        
{
            
float
 totalMoney 
=
 
0.00f
;
            
foreach
 (
float
 tm 
in
 金额)
                totalMoney 
+=
 tm;
            
return
 totalMoney;
        }
    }
}
本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2007/11/13/958409.html,如需转载请自行联系原作者
你可能感兴趣的文章
hdu1085
查看>>
C#之获取年、月、日、时、分、秒...
查看>>
函数的不定长参数
查看>>
转载:一碗牛肉面的思考
查看>>
Story Of Web Background
查看>>
emotion使用笔记
查看>>
Discuz3.4-SSRF-从触发点到构造payload
查看>>
01 jmeter性能测试系列_Jmeter的体系结构
查看>>
linux -- Ubuntu 安装搜狗输入法
查看>>
ns-2 tcp-udp模拟实验
查看>>
『转』古老的IRC命令
查看>>
使用只有头结点的链表实现栈
查看>>
equals方法
查看>>
PreparedStatement/Statement处理insert update等操作时乱码,以及URL
查看>>
博客作业2---线性表
查看>>
Python基础学习笔记
查看>>
看破欧拉函数的奥秘
查看>>
ASP.NET管道
查看>>
2017-5-17 文件异常
查看>>
Linux 常用命令
查看>>