如何为以下问题编写逻辑。这个问题有点棘手。
两个王国在交战。王国1有N名士兵(从1到N),战争持续K天。每天每个王国只有一名士兵在战斗。
王国1可以从士兵编号Ni到Nj中选择一名士兵。每天都会向您提供Ni和Nj。
选择标准:每名士兵都有2个参数-A和B。如果A为最大值,则选择一名士兵。如果一个以上的士兵具有A max,则该士兵具有min。 (入围士兵中的)B被选中。如果仍然有不止一名士兵可用,则选择(入围士兵中索引最少的)士兵。 打印每天在战争中选择的士兵编号。
输入: 第1行包含Kingdom1的士兵人数=> N 第2行包含A的N个空格分隔的值 第3行包含N个以空格分隔的B值 第4行包含战斗进行的天数=> K 接下来的K行包含Ni和Nj的空格分隔值
输出: K行包含每天战争中选择的士兵编号。
样本输入: 10 2 5 3 7 9 2 9 8 7 15 5 2 1 8 3 1 2 9 0 5 3 1 5 3 8 4 10
结果: 5 7 10
感谢您的帮助。提前致谢。
答案 0 :(得分:1)
这可能不是最干净的答案,但它可以工作(在此代码中,我假设ni和nj也在候选列表中)
num = input()
a = input()
b = input()
k = input()
start = []
end = []
for i in range(int(k)):
(ni, nj) = input().split(' ')
start.append(int(ni))
end.append(int(nj))
for j in range(len(start)):
amax = a[start[j]-1]
bmin = a[start[j]-1]
chosen = start[j]
for i in range(end[j]-start[j]+1):
if amax < int(a[start[j]+i-1]):
amax = int(a[start[j]+i-1])
bmin = int(b[start[j]+i-1])
chosen = start[j]+i
elif amax == int(a[start[j]+i-1]):
if bmin > int(b[start[j]+i-1]):
amax = int(a[start[j] + i - 1])
bmin = int(b[start[j] + i - 1])
chosen = start[j]+i
print('the chosen one is number %i' % chosen)