有大佬指点指点吗??
2025-03-09 22:08:48
发布于:江苏
27阅读
0回复
0点赞
虽然大部分AC,但是MLE了,由大佬能教我减少内存吗
import itertools
a,b=map(int,input().split(" "))
it=range(1,a+1)
lst=list(itertools.permutations(it))
pe=lst[b-1]
print(' '.join(map(str, pe)))
全部评论 1
哥,你这都生成所有排列了,内存不爆才有鬼了.
我给你一个AC代码参考一下,你看看n, m = map(int, input().split()) # 预计算阶乘数组,factorials[i] 存储 i! factorials = [1] * (n + 1) for i in range(1, n + 1): factorials[i] = factorials[i-1] * i k = m - 1 # 转换为从0开始的索引 nums = list(range(1, n + 1)) result = [] for i in range(n): # 当前剩余数字的数量是n-i,对应的阶乘是(n-i-1)! remaining = n - i fact = factorials[remaining - 1] index = k // fact result.append(nums[index]) del nums[index] k = k % fact print(' '.join(map(str, result)))
注释里给解释了我就不多说了,而且我主攻c++的,所以代码仅供参考了(好久没写py的代码了)
2025-03-09 来自 江苏
0
有帮助,赞一个