所以基本上我有一个非常典型的问题,我以前从stackoverflow找到了一些解决方案,但这并没有真正帮助我。你知道吗
我有一个学校的任务,需要我分析长橇队。我有名字,他们的评级和体重在三个单独的名单,我需要选择四个最好的评级和他们的体重加起来不得超过325公斤的竞争对手。我已经做的是,我已经创建了一个for
循环,挑选出四个评分最高的竞争对手,但问题是,他们的评分可能很高,但他们的体重加起来超过325公斤。
例如,我有三个列表:
["Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8"] ## names
[1,2,3,4,5,6,7,8] ##ratings
[50,60,70,80,90,100,110,120] ##weights
我得到的是[5,6,7,8]
(他们每个人都有一个相应的体重表和名单,例如评级为5的选手体重为90公斤,名字是name 5),但他们的体重总和高于325公斤(90+100+110+120>;325)
到目前为止,我已经完成了编码,最小的元素(5)被移除并被另一个较低的元素替换,但是当切换最后一个元素还不够时,问题就出现了(我的意思是我不知道怎么做),我需要尝试替换元素6并保持元素5在适当的位置。你知道吗
现在切换的代码是:
while (kaalude_summa > 325): #if weight is over 325 kg
positsioon = reiting.index(max(reiting)) #position for max rating
if kaalud[positsioon] < kaalude_tulemused[3]: #two lists - one is for elements not in the resulting list (kaalud) and one is for the elements in resulting list (kaalude_tulemused)
kaalude_tulemused[3] = kaalud[positsioon] #sets new weight in result list
tulemuslist.remove(min(tulemuslist)) #removes number 5 from example list [5,6,7,8] (check above)
tulemuslist.append(max(reiting)) #adds number 4 from example list
kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3] #new calculated weight
reiting.remove(max(reiting)) #removes element from list [1,2,3,4]
kaalud.remove(kaalud[positsioon])
只要评分为1、2、3或4的选手体重加上其他三个体重(6、7、8)不超过325,这一方法就有效。你知道吗
我知道这可以通过两个for循环来实现,但我尝试了三次,失败得很惨。你知道吗
在我们学校必须用爱沙尼亚语写代码,所以我很抱歉没有用英语写。你知道吗
我真的希望我写的东西是可读的,你能帮助我。先谢谢你。你知道吗
解决这个问题的一个方法是在后面加上while-s。虽然它仍然易碎,但它会检查每个位置的元素。你知道吗
一个蛮力的方法是找到所有可能的组合4雪橇。对于每一个,找到他们的组合重量,并扔掉那些超过325。在剩下的人中,选择评分最高的人。你知道吗
相关问题 更多 >
编程相关推荐