// 回溯法1
def dfs(nums,temp):if not nums:
res.append(temp)return True
for i inrange(len(nums)):if not temp or abs(temp[-1]-nums[i])>1:dfs(nums[:i]+nums[1+i:],temp+[nums[i]])
res=[]
nums=list(range(1,10))dfs(nums,[])print(res)
// 回溯法2
def dfs(nums):
res=[]iflen(nums)==1:return[[nums[0]]]for i inrange(len(nums)):for j indfs(nums[:i]+nums[i+1:]):ifabs(j[0]-nums[i])>=2:
res.append([nums[i]]+j)return res
nums=[1,2,3,4]
a=dfs(nums)print(a)