Python实现凑发票-任意个数字相加得到一个金额(求多元一次方程)【一】

利用python开发一个程序,实现从给定的多个数字中,找到和为某一个数的最优解。

即从a1,a2,a3,a4…an-1,an中找到相加和为X的解

这种方法最多应该就利用在凑发票上了 = =

首先附上软件下载地址:http://fourpan.com/fs/fx9tcsbi0n6gca7song3/

 

软件截图:

 

首先要思考的是计算的算法

在最初期的时候,想到的是,我从中任取任意个金额,在尝试次数够多的情况下,如果有正确的解,那么一定可以找到,也就是说只是时间问题。

初学python,怎么用代码来实现这种算法?

我想到的是建立一个列表list,其中list[n]随机为0或者1,将list中每一项和给出的数字相乘

 

将已经给的n个数字组成一个列表,命名为ticketlist[],随机0或者1的列表为ranlist[]

问题变成:

Ticketlist[1]*ranlist[1]+ticketlist[2]*ranlist[2]+…+ ticklist[n]*ranlist[n]=X

其中

Ranlist[i] = random(0,2,1)

这样给出一个较大的计算次数,例如10W次,那么就有较大可能求出这个解。

 

发表评论