line = gets
L=line.split(" ")
searchMap=L.permutation.map(&:join)
S = gets
searchMap.each do |item|
if S.include? item
puts S.index(item)
end
end
如果L非常大,那么我得到'join':无法从每个的排列中分配。
答案 0 :(得分:2)
你现在正在做的是创建一个枚举器,它将一次产生一个排列,不会消耗太多内存,然后使用.map(&:join)
将这个枚举器中的所有内容放入一个巨大的数组中searchMap
。
而不是你应该一次从枚举器中提取一个排列并对其进行处理,而不是使用searchMap.each
迭代巨大的数组:
line = gets
L=line.split(" ")
S = gets
L.permutation do |item|
if S.include? item.join
puts S.index(item.join)
end
end
答案 1 :(得分:1)
您可以计算每个排列而无需计算其他排列,请查看此问题“Finding n-th permutation without computing others”,您将在C中找到答案。