[C++] BAEKJOON 11047
1332 ワード
コイン枚
質問する
ジュンギュが持っているコインは全部でN種類で、どれもたくさんあります.
硬貨を適当に使って、その価値の和をKにします.必要なコインの数の最大値を求めるプログラムを作成してください.
入力
第1行はNとKを与える.(1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
2行目から、N行目では昇順にコインの価値Aiが与えられる.(1≦Ai≦100000,A 1=1,i≧2の場合、AiはAi-1の倍数)
しゅつりょく
Kドルを作るのに必要なコインの数の最大値を1行目に出力します.
コード#コード#
#include <iostream>
#include <vector>
using namespace std;
int N, K;
vector<int> A;
int cnt;
void greedy(int money, int max) {
int i;
int m=0;
if (money <= 0) return;
for (i = max; i >= 0; i--) {
m = money - A[i];
if (m >= 0) break;
}
cnt++;
greedy(m, i);
}
int main(void) {
cin.tie(NULL); ios::sync_with_stdio(false);
cin >> N >> K;
A.assign(N, 0);
cnt = 0;
for (int i = 0; i < N; i++) {
cin >> A[i];
}
greedy(K, N-1);
cout << cnt;
}
Reference
この問題について([C++] BAEKJOON 11047), 我々は、より多くの情報をここで見つけました
https://velog.io/@hyoomi/C-BAEKJOON-11047
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <vector>
using namespace std;
int N, K;
vector<int> A;
int cnt;
void greedy(int money, int max) {
int i;
int m=0;
if (money <= 0) return;
for (i = max; i >= 0; i--) {
m = money - A[i];
if (m >= 0) break;
}
cnt++;
greedy(m, i);
}
int main(void) {
cin.tie(NULL); ios::sync_with_stdio(false);
cin >> N >> K;
A.assign(N, 0);
cnt = 0;
for (int i = 0; i < N; i++) {
cin >> A[i];
}
greedy(K, N-1);
cout << cnt;
}
Reference
この問題について([C++] BAEKJOON 11047), 我々は、より多くの情報をここで見つけました https://velog.io/@hyoomi/C-BAEKJOON-11047テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol