def main(): N, K = map(int, input().split()) T = [] for i in range(N): T.append(list(map(int, input().split()))) ans = 0 # 途中地点のリスト point = [i for i in range(1, N)] # 通り方の数 directions = pt(point) for d in directions: ttl = 0 # スタート地点 start = 0 for j in range(len(d)): goal = d[j] ttl += T[start][goal] start = goal ttl += T[start][0] if ttl == K: ans += 1 print(ans)
def bus(price,sumv): s=0 dic={-1:-1} x,y,xy,yy=price xq =range(int(sumv/x)+1) yq =range(int(sumv/y)+1) xyq =range(int(sumv/xy)+1) yyq =range(int(sumv/yy)+1) ways= pt(xq,yq,xyq,yyq) for q in ways: si=sum([x*y for x,y in zip(price,q)]) if si>sumv: continue elif si==sumv: print('xq,yq,xyq,yyq') print(q) print(si) elif si>s: s=si else: continue if s in dic.keys(): li=[dic[s]] dic[s]=li.append(q) else: dic[s]=q print('xq,yq,xyq,yyq') print(dic[s]) print(s)
def solution1(numbers): cases = list(pt(numbers, len(numbers))) l = [] for c in cases: nums = list(map(str, c)) num = ''.join(nums) l.append(num) l.sort() return l[-1]
def solve(self): assert(self.a.shape[0] == self.a.shape[1]) length = self.a.shape[0] result_value = np.inf result_perm = None for perm in pt(range(length)): current = 0 for i, j in enumerate(perm): current += self.a[i, j] if result_value > current: result_value = current result_perm = perm return (result_value, result_perm)
def EMD(x): x_n = len(x[0]) out = [] for loop1 in pt(range(x_n), x_n): sign = list(loop1) dis = 0 for loop2 in loop1: max1 = 0 index1 = sign[0] for loop3 in sign: if x[loop2][loop3] > max1: max1 = x[loop2][loop3] index1 = loop3 dis += max1 sign.remove(index1) out.append(dis) return max(out)
def solution(k, dungeons): # [최소 필요 피로도, 소모피로도] # dp,... 아니면 완탐 length = len(dungeons) data = list(pt(dungeons, length)) Max = 0 for case in data: k_tmp = k i = 0 cnt = 0 print(case) while k_tmp >= 0: if i == length: break if k_tmp >= case[i][0]: k_tmp -= case[i][1] cnt += 1 i += 1 else: break if Max < cnt: Max = cnt print(Max)
from itertools import permutations as pt s = input() s.upper() a = s.split(" ") k = int(a[1]) if k not in range(1, len(a[0]) + 1): pass else: b = [] for i in a[0]: b.append(i) b.sort() a = pt(b, r=k) for i in a: for j in i: print(j, end="") print()
def numTilePossibilites(tiles): l = list(tiles) p = chain.from_iterable(pt(l, i) for i in range(len(l) + 1)) r = set(p) return len(r) - 1
def permute(a): a = sorted([''.join(i) for i in pt(a)]) print(*a)
from itertools import permutations as pt t = int(input()) for I in range(t): final = 0 n, k = [int(i) for i in input().split()] has = [0] * (n + 1) miss_ind = [] a = [int(i) for i in input().split()] for i in range(len(a)): has[a[i]] += 1 if (a[i] == 0): miss_ind.append(i) miss_ele = [] for i in range(1, len(has)): if (has[i] == 0): miss_ele.append(i) comb = list(pt(miss_ele)) for i in range(len(comb)): c = 0 for j in range(len(miss_ind)): a[miss_ind[j]] = comb[i][j] for j in range(1, len(a)): if (a[j] > a[j - 1]): c += 1 if (c == k): final += 1 print(final)