我面临问题以获取以下问题的逻辑

时间:2020-02-29 15:55:57

标签: python-3.x logical-operators

如何为以下问题编写逻辑。这个问题有点棘手。

两个王国在交战。王国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

感谢您的帮助。提前致谢。

1 个答案:

答案 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)