有人能告诉我,为什么我得到了以下解决方案的codechef西澳?
问题链接:https://www.codechef.com/problems/TWTCLOSE
解决方案:

n, k = map(int, input().split())
com = []
while(k):
    k -= 1
    com.append(input())
l = len(com)
tweets = []
for i in range(0, n):
    tweets.append(False)
for i in range(0, l):
    if(com[i] == "CLOSEALL"):
        for j in range(0, n):
            tweets[j] = False
    else:
        temp = com[i]
        tweets[int(temp[-1])-1] = not tweets[int(temp[-1])-1]
    count = 0
    for i in range(0, n):
        if(tweets[i]):
            count += 1
    print(count)

输入:
3 6
CLICK 1
CLICK 2
CLICK 3
CLICK 2
CLOSEALL
CLICK 1

输出:
1
2
3
2
0
1

最佳答案

for i in range(0, l):
    tweets.append(False)

这是错误的,有N条推文,l只是点击量。
if(com[i] == "CLOSEALL"):
    for j in range(0, l):
        tweets[j] = False

因为同样的原因错了。
for i in range(0, l):
    if(tweets[i]):
        count += 1

再说一遍,只数到l而不是n。事实上,你根本不用n。这是一个很大的暗示,你漏掉了一些东西。
更正后更新:
tweets[int(temp[-1])-1] = not tweets[int(temp[-1])-1]

temp[-1]表示最后一个字符,这对于从1到9单击tweets都是很好的,但是如果你想单击tweet 21,你只需要选择最后一个字符,这样你就可以单击tweet 1而不是21按空格分割并选取所有数字将是一种修复方法

09-27 16:14