有人能告诉我,为什么我得到了以下解决方案的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按空格分割并选取所有数字将是一种修复方法