首页 新闻 会员 周边 捐助

求"无限级"阶梯电费的算法

0
悬赏园豆:80 [待解决问题]

一般情况下,阶梯电费为三档,直接列函数计算即可。现求"无限级"阶梯电费的算法。具体阶梯参数如下:

需要根据"本年度已用电量"UsedSpare,"本次电量"TheSpare,计算“本次电费”TheMoney。求算法?

(阶梯电费以一年为一个周期)。

Laputa1984的主页 Laputa1984 | 初学一级 | 园豆:64
提问于:2017-01-18 08:48
< >
分享
所有回答(5)
0

你price这个有规律么?

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-18 09:02

单价没有规律,只是参数。

支持(0) 反对(0) Laputa1984 | 园豆:64 (初学一级) | 2017-01-18 09:25

@Way_1984: 你都没规律,写个配置文件老老实实的匹配吧。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-01-18 10:55
0

考虑递归计算。

幻天芒 | 园豆:37207 (高人七级) | 2017-01-18 09:02

是否能根据我提问的参数,使用C语言,给个算法函数。

支持(0) 反对(0) Laputa1984 | 园豆:64 (初学一级) | 2017-01-18 09:27
2
 1 #include <stdio.h>
 2 
 3 double FeeCaculate(double used_spare,double the_spare,int n,double steps[],double prices[])
 4 {
 5     int i;
 6     int start_step=-1,end_step=-1;
 7     double the_money=0;
 8     for(i = 0;i < n;i++)
 9     {
10         if(steps[i] >= used_spare && start_step < 0)
11         {
12             start_step = i;
13         }
14         if(steps[i] > used_spare+the_spare)
15         {
16             end_step = i;
17             break;
18         }
19     }
20     if(end_step < 0)
21     {
22         end_step = n-1;
23     }
24     the_money += prices[start_step]*(steps[start_step]-used_spare);
25     for(i = start_step+1;i < end_step;i++)
26     {
27         the_money += prices[i]*(steps[i+1]-steps[i]);
28     }
29     the_money += prices[end_step]*(used_spare+the_spare-steps[end_step-1]);
30     return the_money;
31 }
32 
33 int main()
34 {
35     double UsedSpare = 0.0;
36     double TheSpare = 1.5;
37     double TheMoney=0.0;
38     int n = 10;
39     double steps[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
40     double prices[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
41     TheMoney = FeeCaculate(UsedSpare, TheSpare, n, steps,prices);
42     printf("The money=%lf\n",TheMoney);
43     return 0;
44 }

我测了一下是没有问题的,边界测试没有做,也许有没有考虑到的边界问题,不过算法没问题,你可以看看。

C4ISR | 园豆:214 (菜鸟二级) | 2017-01-18 16:48
0

这个应该不难的,我们的价格表也有这种情况。。。。

剑魔 | 园豆:206 (菜鸟二级) | 2017-01-22 17:29
0

每档事先算好一个累加数totalN(即StepN-1时的电费)。 如果电量为X在N档,则价格为 (X - StepN-1 )*PriceN + totalN

五星 | 园豆:125 (初学一级) | 2017-02-01 16:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册