https://leetcode.com/problems/permutations/
Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.
Example 1:
Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
Example 2:
Input: nums = [0,1]
Output: [[0,1],[1,0]]
Example 3:
Input: nums = [1]
Output: [[1]]
class Solution:
# backtracking
def permute(self,nums):
ret = []
def bt(tr):
if len(tr)==len(nums):
ret.append(tr)
return
for n in nums:
if n not in tr:
bt(tr+[n])
bt([])
return ret
https://www.acmicpc.net/problem/15650
https://www.acmicpc.net/problem/15666
def ints(): return list(map(int, input().split()))
n,m=ints()
xs = ints()
def bt(memo, xs, tr, m):
if m==0:
tr = ' '.join(tr)
if tr not in memo:
memo.add(tr)
print(tr)
return
for i,x in enumerate(xs):
next_tr = tr + [x]
bt(memo, xs[i:], next_tr, m-1)
xs = list(map(str, sorted(xs)))
bt(set(), xs, [], m)