我在写一个背包问题的代码。有一个有重量容量的背包,你选择一个特定的项目组合,以找到最好的解决方案。我试图随机生成可能的解决方案。因此,我的代码将选择随机数量的随机项(生成一个随机大小的列表),并测试解决方案是否可行(小于容量)或不可行(大于容量)。然而,当我试图把所有物品的总重量和总价值相加时,这个数字是关闭的。比如说,这是每一项的数据。
Itms Wts Vals
=====================
1 22 80
2 29 35
3 12 36
4 14 24
5 29 41
6 30 87
7 18 10
8 22 63
9 12 66
10 27 72
Items picked: [6, 4, 1, 7, 8, 3]
Feasible: Total Wt = 18 Total Val = 10
Items picked: [1]
Infeasible: Total Wt = 135 Total Val = 264
Items picked: [5, 1, 8, 6, 7, 4]
Infeasible: Total Wt = 89 Total Val = 198
所以值是不正确的。但我看不出我的代码有什么问题:
def genSoln(cap,items):
g = input("Would you like to generate random potential solutions? [y/n] ")
if g == 'y':
gen = int(input("Number of times to generate/check random potential solutions? "))
totalwt = 0
totalval = 0
for i in range(1,gen+1):
pop = range(1,items)
leng = random.randint(1,len(pop))
ran = random.sample(pop, leng)
for i in ran:
totalwt += int(wts[i])
totalval += int(vals[i])
if i == len(ran):
if totalwt < int(cap):
print("Items picked: ", ran)
print("Feasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
else:
print("Items picked: ", ran)
print("Infeasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
totalwt = 0
totalval = 0
不要紧。我自己想出了答案。我只需要取出,如果I==len(ran):
,将totalwt
和totalval
移动到for循环中(for I在范围(1,gen+1)
),并在添加到totalwt
和totalval
时从I中减去1。
def genSoln(cap,items):
g = input("Would you like to generate random potential solutions? [y/n] ")
if g == 'y':
gen = int(input("Number of times to generate/check random potential solutions? "))
for i in range(1,gen+1):
totalwt = 0
totalval = 0
pop = range(1,items)
leng = random.randint(1,len(pop))
ran = random.sample(pop, leng)
for i in ran:
totalwt += int(wts[i-1])
totalval += int(vals[i-1])
if totalwt < int(cap):
print("Items picked: ", ran)
print("Feasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
else:
print("Items picked: ", ran)
print("Infeasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
我的目标是从用户输入的“AM”-“PM”字符串格式打印包含24小时十进制格式的进入和退出时间的列表,如以下字符串数组:{6AM#8AM,11AM#1PM,7AM#8PM,7AM#8AM,10AM#12PM,12PM#4PM,1PM#4PM,8AM#9AM} 我在for循环中声明了各个列表,并在循环中为它们赋值,但从代码中得到了以下运行时异常:java。lang.IndexOutOfBoundsEx
本文向大家介绍向Bootstrap列表组中的活动列表项添加背景色,包括了向Bootstrap列表组中的活动列表项添加背景色的使用技巧和注意事项,需要的朋友参考一下 使用.active类将灰色背景色添加到Bootstrap列表组中的活动列表项中。 您可以尝试运行以下代码将背景色添加到活动列表项中- 示例
所以我想拿一个这样的清单: <代码>[1,2,3,4] 然后在位置“i”前添加一个项目。例如,如果i=2,列表将变为: 我怎么能用蟒蛇做呢?先谢谢你。
我有一个输入字段,它使用的是。下面的确实返回了我的列表 该列表以代码隐藏方式生成,如下所示 我的观点 但是当我运行代码时,我得到了以下错误 \n\nSCRIPT1004:预期; 下面是它返回的一些结果:$(函数(){var list=list[2103]; 注意:所有粗体的措辞都是我的清单失败的地方。 我试着做
本文向大家介绍sharepoint项目。从列表中检索项目,包括了sharepoint项目。从列表中检索项目的使用技巧和注意事项,需要的朋友参考一下 示例
本文向大家介绍Visual Basic .NET将项目添加到列表,包括了Visual Basic .NET将项目添加到列表的使用技巧和注意事项,需要的朋友参考一下 示例 要一次添加多个项目,请使用AddRange。始终添加到列表的末尾 为了将项目添加到列表的中间,请使用插入 插入将把该项目放置在索引处,并对其余项目重新编号 新输出: