python求助!!实在找不出错哪了

P1320 压缩技术(续集版)

Xi3414954826 @ 2024-02-28 14:56:36

求助python,找不到错误点,就20分

lst1 = []
lst2=[]
lst3=[]
a=0
b=0
while True:
    try:
        line = input()
        if not line:
            break
        lst1.append(line)
    except EOFError:
        break
n=len(lst1)
lst3.append(n)
for i in lst1:
    for j in range(len(i)):
        lst2.append(i[j])
# print(lst2)
c=lst2.index('0')
for i in range(c,len(lst2)):
    if lst2[i] == '0':
        if b!=0:
            lst3.append(b)
            b=0
        a+=1
    elif lst2[i]=='1':
        if a!=0:
            lst3.append(a)
            a=0
        b+=1
if a != 0:
    lst3.append(a)
elif b != 0:
    lst3.append(b)
print(' '.join(map(str,lst3)))

by 杜都督 @ 2024-02-28 15:20:08

你错在这里了:

第一个数是N,其余各位表示交替表示0和1 的个数

从第二位开始,所有偶数位都固定地表示0的个数,所有奇数位都固定地表示1的个数

所以如果一上来就是1的话,说明刚开始就没有0,那么答案的第二位就应该是0,反观你的代码逻辑,最后的答案中是不可能存在0的,所以错了


by Terrible @ 2024-02-28 15:55:12

我认为题目不完整:不能不加讨论地认为 0 对应“有”的概念。题目表述绝对有问题。

框子里有 1 个红球和 0 个黄球是否可以说框子里既有红球,也有黄球?


|