关闭推文-CodeChef

时间:2018-07-16 13:56:56

标签: python python-3.x algorithm

有人可以告诉我为什么我要在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

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。按空格分割并选择所有数字将是一种解决方法