Here是2010年Google Code Jam问题的链接。
from sys import *
def solve(_, items,p):
for i in xrange(len(items)):
for j in xrange(i+1,len(items)):
if items[i] + items[j] == c:
print "Case #%d: %d %d" %(_+1,i+1,j+1)
cases = int(raw_input())
for _ in xrange(cases):
c = int(raw_input())
i = int(raw_input())
items = map(int,stdin.readline().split())
solve(_,items,c)
在尝试自己解决问题之后,以及之后参考我在Google解决方案网站上找到的代码,其中有一部分我似乎无法弄清楚。那是第12行:
i = int(raw_input())
除了这个初始声明之外,我还没有看到它在代码中是如何被使用的。然而,如果我对该行进行注释,则代码将无法运行,从而产生以下错误:
invalid literal for int() with base 10: '5 75 25'
有人可以解释为什么需要这一行以及如何在代码中使用它?
答案 0 :(得分:2)
这非常符合问题中的说明:
第一行输入给出了案例数,N.N测试案例如下。
cases = int(raw_input())
对于每个测试用例,将有:
for _ in xrange(cases):
一行包含值C,即您在商店的信用额度。
c = int(raw_input())
一行包含值I,即商店中的商品数量。
i = int(raw_input())
一行包含空格分隔的I整数列表。
items = map(int,stdin.readline().split())
我认为,您的困惑源于评论i
定义的行,而不理解设置i
的副作用。 python代码不需要对i
执行任何操作,因为split()
无需知道有多少项(某些语言可能需要此信息,因此问题提供它),但我们仍然需要拨打raw_input()
以便超越该行并阅读项目列表。
因此,您可以移除i = int(...)
,只需在该行上调用raw_input()
,代码仍可正常运行。作者只是遵循处理输入的文档化步骤,即使solve()
不需要它。