如何编写以下问题的逻辑。这个问题有点棘手。
两个王国正在交战。王国1有N名士兵(编号为1到N(,战争持续了K天。每个王国每天只有一名士兵参加战斗。
王国1可以从士兵编号Ni到Nj中选择一名士兵。Ni和Nj每天都会提供给您。
选择标准:每个士兵有2个参数-A&B.如果A为最大值,则选择一名士兵。如果不止一名士兵的最大值为A,则选择(入围士兵中(最小值为B的士兵。如果仍有多个士兵可用,则会选择(入围士兵中(索引最少的士兵。打印为战争的每一天选择的士兵编号。
输入:第1行包含Kingdom1=>N的士兵数量第2行包含A的N个空格分隔值第3行包含B的N个空格分隔值第4行包含战斗持续的天数=>K接下来的K行包含Ni和Nj 的空间分隔值
输出:K行包含为战争的每一天选择的士兵编号。
样本输入:102 5 3 7 9 2 9 8 7 155 2 1 8 3 1 2 9 0 53.1 53 84 10
结果:5.7.10
感谢您的帮助。提前谢谢。
这可能不是最干净的答案,但它会起作用(在这段代码中,我假设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)