有人可以告诉我为什么我要在CodeChef上获得以下解决方案的WA吗?
问题链接: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
答案 0 :(得分:0)
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的tweet都非常有用,但是如果您想单击tweet 21,则只是选择了最后一个字符,因此您单击tweet 1而不是21。按空格分割并选择所有数字将是一种解决方法