首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问一个小算法

2012-04-22 
请教一个小算法收费分级算法。使用金卡,先免费2元(免费1小时),超过1小时部分,每小时收费2元,超过3小时部分

请教一个小算法
收费分级算法。使用金卡,先免费2元(免费1小时),超过1小时部分,每小时收费2元,超过3小时部分每小时4元。
现在:dt2为当前时间,dt为入场时间,hours为总时间。int fee为总费用,现在求fee应该算法应该怎么写?  
TimeSpan ts = dt2 - dt;
int hours = (int)ts.TotalHours;



[解决办法]
从最大的3小时算起,然后算剩下的小时,以此类推,最后对金卡单独-2
[解决办法]
其实就是说抄了三小时之后每小时4元,不超的话就是2元
算法文字描述如下:
先判断时间是否大于3小时(不大于的话直接乘以2,金卡减两元(送一小时));
如果大于三小时则(hours-3)*4+6,金卡减2.
[解决办法]
TimeSpan ts = dt2 - dt;
int hours = (int)ts.TotalHours;
int fee = 0;

if (hours > 3)
{
fee = (hours - 3) * 4 + fee;
hours = 3;
}
if (hours > 1 && hours <= 3)
{
fee = (hours - 1) * 2 + fee;
}
[解决办法]
策略模式.

热点排行