欲張りアルゴリズム
7828 ワード
貪欲法
可能な限りナビゲートする方法
だいすうのほうそく
異なる数の配列がある場合、与えられた数を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
Reference
この問題について(欲張りアルゴリズム), 我々は、より多くの情報をここで見つけました
https://velog.io/@dlskawns96/탐욕법-Greedy-Algorithm-알고리즘-공부
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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
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_)
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
Reference
この問題について(欲張りアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@dlskawns96/탐욕법-Greedy-Algorithm-알고리즘-공부テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol