写了好久的递归调用dfs,结果超时了,一看答案感觉自己像小丑,记录一下

n = int(input()) s = input() if s[-1] != '1': print(-1) else: def deal(arr:list, s:str, arr2:list): if len(arr) == len(s): return arr else: if s[len(arr)] == '0': for i in arr2: t2 = arr2.copy() t = arr + [i] if sorted(t) != [x for x in range(1,len(t)+1)]: t2.remove(i) if deal(t, s, t2) != None: return deal(t, s, t2) else: continue else: for i in arr2: t2 = arr2.copy() t = arr + [i] if sorted(t)== [x for x in range(1,len(t)+1)]: t2.remove(i) if deal(t, s, t2) != None: return deal(t, s, t2) else: continue ini = [x for x in range(1,n+1)] if deal([], s, ini) != None: print(*deal([], s, ini)) else: print(-1)