A 公司有自己的系统,用于向卖家征税。税收以累进方式计算。例如。如果卖家出售值(value) 25 美元的商品,那么前 10 美元的税 = 8%,剩余的 15 美元税 = 7%。所以总税额 = 25 人的 8% + 15 人的 7%。
他们用来计算税金的表格如下
$0 - $10 8%
$11 - $50 7%
$51 - $500 6%
$501 - $10000 5%
$10001 -$1000000 4% and so on.
您将使用哪种数据结构来存储此表以及如何使用该数据结构编写函数代码
float computeTaxableAmount( float 金额){}
最佳答案
我会使用结构数组。考虑:
fields: from to percentage cumulative
values: 0 10 0.08 0
10 50 0.07 0.80 (= (to-from)*percentage from row above)
50 500 0.06 0.80 + (50-10)*0.07 = 4.00
500 10000 0.05 4.00 + (500-50)*0.06 = 31.00
...
请注意累积字段:仅达到相关税级就隐含的合并税的运行总计。然后,假设您想要对某些 X 美元的销售额征税,您会发现包含 X 的行(即 from <= X < to
),总税额为:
(X - from) * percentage + cumulative
预先计算早期税级的合并税可以避免在程序执行期间进行无意义的数学重复。
您可以通过二进制搜索找到 X 所属的单个税级,但是 - 考虑到元素很少 - 计算/移动探测位置的开销可能比线性搜索的“未命中”成本更高。 (如果绝望或无聊,您可以探索一些纳米级优化,例如从中间行开始以最大程度地减少最坏情况的遗漏,或者如果输入值趋于相似,则从您上次匹配的行开始等。)
关于algorithm - 适用于计算累进税的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755828/