2019腾讯暑期笔试打野怪问题
昨天晚上做了腾讯暑期笔试的题目,本人是主要干python,大题都做了,但是死活调试不出来,做题时思路混乱,下去以后重新做了第三题。题目大概是这样子的。
输入:
3
8 5 10
1 1 2
输出:
2
输入:
4
1 2 4 8
1 2 1 2
输出:
1 2 1 2
我的思路是这样的:第一个野怪必须贿赂,初始武力值(sum)为第一个野怪的武力值,然后用这个武力值分别与之后碰到的野怪武力值进行比较,如果这个武力值都大于或等于后面野怪的武力值,则循环跳出,所要带的金币即可根据count遍历求出;如果这个武力值小于之后的任意一个的武力值,则贿赂下一个野怪,count做加一操作,最后根据count计数,求出所要带的金币数。
附代码(python)
n=eval(input())#野怪数目
fower=list(input().split())#野怪武力值
money=list(input().split())#收买野怪需要的金币数
count=0
money1=0
flag=False
#大循环,从第二个野怪开始
for i in range(1,len(fower)):
#先贿赂第一个野怪
sum1=sum(eval(fower[j]) for j in range(0,i))
#和之后的野怪一一对比,如果一直都比之后的武力值大,则跳出就欧克,否则,贿赂之后的野怪
for num in range(i,len(fower)):
if sum1>=eval(fower[num]):
flag=True
else:
flag=False
if flag==True:
break
else:
count+=1
for i in range(count+1):
money1+=eval(money[i])
print(money1)
大家思路都是怎么样的呢。