현재 상태에서 가능한 모든 경로를 따라 탐색하다가 원하는 값이 아니면 더 이상 탐색을 진행하지 않고 전 단계로 돌아감.
def back(start):
global cnt
if sum(stack) == s and len(stack) >0:
cnt +=1
for i in range(start, n):
stack.append(li[i])
back(i+1)
stack.pop()
n , s = map(int, input().split())
li = list(map(int, input().split()))
cnt = 0
stack =[]
back(0)
print(cnt)
def back():
global ans
if sum(visited) ==n:
total = 0
for i in range(n-1):
total += abs(stack[i]-stack[i+1])
if total > ans:
ans =total
return
for i in range(n):
if visited[i]==0:
visited[i]=1
stack.append(li[i])
back()
stack.pop()
visited[i]=0
n = int(input())
li = list(map(int, input().split()))
visited= [0] *n
stack=[]
ans =0
back()
print(ans)
T= int(input())
def back(product,idx):
global min
if product > min:
return
if sum(visited) == n:
if product < min:
min = product
return
for i in range(n):
if visited[i]==0:
visited[i]=1
back(li[idx][i]+product,idx+1)
visited[i]=0
for tc in range(1, T+1):
n = int(input())
li= [list(map(int,input().split())) for _ in range(n)]
stack=[]
min =0
for i in range(n):
min += sum(li[i])
visited=[0]*n
back(0,0)
print(f'#{tc} {min}')