余晖~ 2022-01-29 20:13 采纳率: 90.3%
浏览 84

超出内存限制了怎么办?

问题遇到的现象和发生背景

一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指——拇指、食指、中指、无名指和小指分别编号为 1 2 3 4 5当它们按正常顺序排列时,形成了 55 位数 1234512345,当你交换无名指和小指的位置时,会形成 55 位数 1235412354,当你把五个手指的顺序完全颠倒时,会形成 5432154321,在所有能够形成的 120120 个 55 位数中,1234512345 最小,它表示 11 ;1235412354 第二小,它表示 22 ;5432154321 最大,它表示 120120。下表展示了只有 33 根手指时能够形成的 66 个 33 位数和它们代表的数字:
输出描述
输出一行,这一行含有 NN 个整数,表示改变后的火星人手指的排列顺序。每两个相邻的数中间用一个空格分开,不能有多余的空格。
输入
5
3
1 2 3 4 5
输出
1 2 4 5 3

问题相关代码,请勿粘贴截图
import itertools
n = int(input())
b = int(input())
a = tuple(map(int,input().split()))
tmp = [int(i) for i in range(1,n+1)]
lst = []
for x in itertools.permutations(tmp,r=None):
    lst.append(x)
ret = lst.index(a)
print(*lst[ret+b])

运行结果及报错内容

sample中的没问题,但是交上去超出内存了

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • chuifengde 2022-01-30 11:25
    关注
    import itertools
    n = int(input(">>>"))
    b = int(input(">>>"))
    a = tuple(map(int,input(">>>").split()))
    tmp = range(1,n+1)
    i = 0
    for x in itertools.permutations(tmp,r=None):
        if x == a:
            i = 1
        if i == b:
            print(x)
            break
        i += 1
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 1月29日
  • 修改了问题 1月29日
  • 创建了问题 1月29日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真