GESP2024年9月认证C++八级( 第二部分判断题(6-10))
第六题参考程序:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {// 目标金额int target = 27;// 硬币面值vector<int> coins = {2, 5, 7};// 初始化 dp 数组,大小为 target + 1,初始值为 INFvector<int> dp(target + 1, 10000); // 假设一个很大的值表示无法支付dp[0] = 0; // 支付 0 元需要 0 个硬币// 动态规划填充 dp 数组for (int i = 1; i <= target; ++i) {for (int coin : coins) {if (i - coin >= 0) {dp[i] = min(dp[i], dp[i - coin] + 1);}}}// 输出结果if (dp[target] != 10000) {cout << "最少需要 " << dp[target] << " 个硬币来支付 " << target << " 元。" << endl;} else {cout << "无法支付 " << target << " 元。" << endl;}return 0;
}