楼主:
nanami (咪子)
2019-09-27 13:12:22新手发问
题目是
薯条一份20元 汉堡一个40元 可乐一杯10元
输入现有的金额 M 和欲购买的食物总和 S
输出所有可能的组合
如果无法分配则输出 "无法依条件分配"
以下是我目前打的:
N = 1000
S = 30
#===========================
#main
x = 0
while x <= S:
y = 0
while y <= S:
z = 0
while z <= S:
if (x + y + z == S) and (20 * x + 40 * y + 10 * z == N):
print("薯条 %d 份; 汉堡 %d 个; 可乐 %d 杯" % (x, y, z))
z = z + 1
y = y + 1
x = x +1
我想请问该如何加入无法分配的条件在此循环中呢?
我本来是加else:
print("无法依条件分配")
在print("薯条 %d 份; 汉堡 %d 个; 可乐 %d 杯" % (x, y, z))的下面一行
但就会变成一直循环无法依条件分配这行字
所以想请问我该怎么改才对呢?
先谢谢各位
作者: robert09080 (Aspettarei) 2019-09-27 13:23:00
我的话会先把两个方程式相减,变成二元一次,之后这样一个循环就可以解决,然后第三个未知数也可以求出来无法分配用t=0,有找到一解t+=1
作者:
bibo9901 (function(){})()
2019-09-27 13:34:00你该学的是数学..
是我数学不好吗?这不是三元一次吗?怎么变二元一次了哦没事 总量固定确实可以用二元一次解 我道歉
你是指不想出现好几百行“无法分配“吗最简单的方法 可以令一个变量x=0 如果有符合条件让x=1最后检查x=0或x=1就好用boolean也可以
作者:
sherees (ShaunTheSheep)
2019-09-27 18:11:00else可以啊 只是大概会有26xx条无法依条件分配而已26xxx
作者:
ttff (十八尖山下智久)
2019-09-27 20:51:00如果你有记得加上z=z+1那程式不是一直循环 而是都有print
看了一下判断式 一开始一直出现无法分配很正常啊用elif加个条件 什么情况算无法分配吧?
作者: s312580 (waiting) 2019-09-28 04:51:00
所有方法可以用土法炼钢的方式写成循环