欲張りアルゴリズム


貪欲法


可能な限りナビゲートする方法


だいすうのほうそく


異なる数の配列がある場合、与えられた数をM回加算して最大数の法則を生成する。 列の特定のインデックスの個数は連続的にKを超えて加算することはできません
N, M, K = map(int, input(). split())
nums = [int(n) for n in input().split()]
nums.sort(reverse=True)

sum = 0
while(True):
    for k in range(K):
        if M == 0:
            print(sum)
            break
        sum = sum + nums[0]
        M = M - 1
        
    if M == 0:
        print(sum)
        break
    sum = sum + nums[1]
    M = M - 1

デジタルカードゲーム


複数のデジタルカードの中から一番高いカードを1枚選ぶゲーム。 ルール:カードはN X Mで並べます。このとき、N行、M行を選択し、開く/抜くカードを含む行/次の行の中で一番数字の低いカードを選択します
N, M = map(int, input().split())
max_ = 1

for n in range(N):
    li = [int(k) for k in input().split()]
    min_ = min(li)
    max_ = max(max_, min_)

print(max_)

1まで


任意の数Nが1である前に、Nから1を減算するか、NをKで除算する(除算時のみ) 最小の繰り返し回数を求めます
N, K = map(int, input().split())
count = 0

while True:
    while N % K == 0 and N != 1:
        N = N / K
        count = count + 1

    if N == 1:
        print(count)
        break

    N = N - 1
    count = count + 1