Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 10
0
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)