python程序设计题邮费收费_python习题1-最大的不可支付邮资问题

问题:假设你有无限数量的邮票,面值分别为6角,7角,8角,请问你最大的不可支付邮资是多少元?【17角,1.7元】

解法一:排列组合筛选法,假设三种邮票均有50张,计算出所有组合数,去重排序,最后得出最大不在组合里的数。

a=6b=7c=8num=50ss=[]#排列组合

for i in range(num+1):for j in range(num+1):for k in range(num+1):

ss.append(a*i+b*j+c*k)

s=[]#去重排序

for x inss:if x not ins:

s.append(x)

s.sort()

t=[]

y=5

for y in range(c*num):if y not ins:

t.append(y)print("最大不可支付邮资:",t[-1],"角")

解法二:思路:

1、邮资:s=6*x+7*y+8*z=6(x+y+z)+(y+2*z),其中0=

2、(x+y+z)的和由0开始递增,当遇到第一个数是(x+y+z)的和,又能满足(y+2*z)覆盖0-5所有组合时,最大不可支付邮资

详细思路:

1、当(x+y+z)=0,x=y=z=0,(y+2*z)=0

2、当(x+y+z)=1,

①y=z=0,x=1,(y+2*z)=0

②y=1,x=z=0,(y+2*z)=1

3、当(x+y+z)=2

①y=z=0,x=2,(y+2*z)=0

②x=y=1,z=0,(y+2*z)=1

③x=z=1,y=0,(y+2*z)=2

④x=0,y=z=1,(y+2*z)=3

4、当(x+y+z)=3

①y=z=0,x=3,(y+2*z)=0

②x=2,y=1,z=0,(y+2*z)=1

③x=2,z=1,y=0,(y+2*z)=2

④x=1,y=z=1,(y+2*z)=3

⑤x=0,y=2,z=1,(y+2*z)=4

⑥x=0,y=1,z=2,(y+2*z)=5

5、当(x+y+z)=4

①y=z=0,x=4,(y+2*z)=0

②x=3,y=1,z=0,(y+2*z)=1

③x=3,z=1,y=0,(y+2*z)=2

④x=2,y=z=1,(y+2*z)=3

⑤x=1,y=2,z=1,(y+2*z)=4

⑥x=1,y=1,z=2,(y+2*z)=5

.

.

.

综上可得,当(x+y+z)=2,(y+2*z)=5,的时候,是最大不可支付邮资Smax=6*2+5=17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值