【发布时间】:2019-12-02 17:18:16
【问题描述】:
对于这个问题,我正在尝试阅读一些直到 EOF 的行:
https://open.kattis.com/problems/tight
这是我尝试过的:
from collections import defaultdict
import sys
def get_ans(n, k):
dp = defaultdict(int)
total = defaultdict(int)
for i in range(n):
for num in range(k+1):
if num+1 <= k:
dp[(i, num)] += dp[(i-1, num+1)]
if num-1 >= 0:
dp[(i, num)] += dp[(i-1, num-1)]
dp[(i, num)] += dp[(i-1, num)]
dp[(i, num)] = max(dp[(i, num)], 1)
total[i] += dp[(i, num)]
return total[n-1]/((k+1)**n)*100
def main():
for line in sys.stdin:
if line == "":
break
print(line)
k, n = map(int, input().split())
ans = get_ans(n, k)
print(str.format('{0:.6f}', ans))
if __name__ == "__main__":
main()
问题:如果我将输入复制并在终端中将其全部粘贴到正在运行的脚本中,我的输出如下所示:
我的意见:
4 1
2 5
3 5
8 7
终端输出
40.740741
3 5
似乎有些行没有被处理——我不明白为什么。
有人能指出我正确的方向吗?
【问题讨论】:
-
所以你正在循环
sys.stdin(并因此从中读取)并在循环中使用input(),它也从sys.stdin读取数据。看起来您的代码最终从sys.stdin中读取了太多内容。您应该坚持一种从sys.stdin读取数据的方法。