import itertools
num_cases = int(input())
answer_list = []
while num_cases>0:
live_ans = []
nums = int(input())
d1 = int(input())
d2 = int(input())
sample_space= {d1, d2}
for i in itertools.product(sample_space, repeat = nums-1):
if sum(i) not in live_ans:
live_ans.append(sum(i))
else:
pass
live_ans.sort()
answer_list.append(live_ans)
num_cases -= 1
for i in answer_list:
finalans = " ".join(map(str, i))
print(finalans)
此代码适用于小型测试用例,例如: 1个 3 1个 2
但是会为以下输入抛出内存错误: 1个 58 69 24
(从代码中可以明显看出,空格分隔的整数实际上是每行输入一个数字)
当itertool操作乘积元组时,将产生内存错误,并且nums的值很大(第二种情况下为58)。还有什么可以做的?
问题陈述可在这里找到:https://www.hackerrank.com/challenges/manasa-and-stones/problem