我正在尝试解决这个问题http://www.spoj.pl/problems/PEBBMOV/。我认为我有正确的算法,这不是这个问题的重点。这个问题有一个奇怪的输入文件。一个测试用例的输入应该是 n a1 a2 a3 ...an 的形式。(所有整数)
这里的问题是,在 a[i] 之间有杂散的换行符等。我需要能够跳过这样的换行符并在一个地方收集属于一个测试用例的所有 a[i]。我怎么知道这一切?好吧,一串 WA 和运行时错误,加上论坛上的一些研究。我有以下 python 代码来尝试执行此操作,但我似乎在关键地方步履蹒跚,只是无法完成。我希望在输入读取结束时的列表行[]中有适当的输入行。
有人可以在这里告诉我我的错误吗?还是建议更好的方法?提前致谢..
import sys
#data = sys.stdin.readlines()
#lines = inp.split('\n')
data = sys.stdin.read()
pos = 0
lno = 0
lines = []
while pos<len(data):
while not data[pos].isdigit():
pos = pos + 1
num =data[pos]
print num
cur = pos + 1
numbers_collected = 0
x = [] # temp list
y = []
while numbers_collected < num:
if cur<len(data) and data[cur].isdigit():
y.append(data[cur])
cur = cur + 1
numbers_collected += 1
else:
if cur<len(data)and numbers_collected < num:
cur = cur + 1
else:
break
print x
pos = cur
x.extend(y)
lines.extend(x)
for line in lines:
print line