发票拼凑程序的源代码
人在江湖漂,哪能不凑票! 可手拿一大把,咋搭配才好? 贴多了,亏的慌;贴少了,人家财务不干啊! 所以造了这个工具,专门计算怎么贴浪费的最少。。。 核心算法: 架设有N张票,那么每张票都有用/不用两种可能,即0/1,共有2的N次方种。那么就可以从0到2^N-1,每个数字的2进制码分别就代表了每张票的用或者不用,把所有位分别取出来,乘以票面值,并最终相加,就是一个选择的总额,从中跳出最接近预期值的就ok了。 存在的问题: 1、longint型是32位的,所以最多只能算32张票。 2、运算量太大,所以超过20张以后就很慢了,除非有刚刚好的强行退出。所以还可以选择差额不超过1块钱(当然可以改成其他额度)就退出的模式,以加快速度。如果张数太多,会看起来跟死机一样。。。 哪位大大给解决一下速度的问题,或者想个更好的核心算法?
用户评论
不能一个票额用多次