python3,80求调!呜呜呜
查看原帖
python3,80求调!呜呜呜
1202745
jinbaobei1212楼主2025/6/23 15:50

才知道python里面for循环是不能永久更改循环变量i的值啊,只能换为while循环了;80分怎么调啊,求大佬帮忙!

def dfs(root):
    global res,find
    if (find==1):
        return 
    if (root>N):
        # 消耗一次深搜找到火星人初始序列
        res+=1
        if (res==M+1):
            find=1
            print(" ".join(map(str,arr[1:N+1])))
        return
    i=1
    while (i>=1 and i<N+1):
        # 找火星人初始序列所在字典位次
        if (res==0):
            # 强制让空格处的数字i等于火星人在本空格处的数字
            i=mars_man[root]
        if(not visit[i]):
            arr[root]=i
            visit[i]=1
            dfs(root+1)
            arr[root]=0
            visit[i]=0
        i+=1     
        
##    for i in range(1,N+1):
##        # 找火星人初始序列所在字典位次
##        if (res==0):
##            # 强制让空格处的数字i等于火星人在本空格处的数字
##            i=mars_man[root]
##        if(not visit[i]):
##            arr[root]=i
##            visit[i]=1
##            dfs(root+1)
##            arr[root]=0
##            visit[i]=0

N=int(input())
M=int(input())
# 火星人初始序列
mars_man=[0]+list(map(int,input().split()))
res=0
visit=[0]*(N+1)
arr=[0]*(N+1)
find=0
dfs(1)

2025/6/23 15:50
加载中...