牛牛是一种非常特殊的动物,不同种群的牛有着不同的特征值。现在给定不同种群的牛的特征值 features 和一个目标特征值 target。编写一个函数来计算可以组合出目标特征值所需的最少的动物牛个数。如果无法组合出目标特征值,返回 -1。
区块链毕设网qklbishe.com为您提供问题的解答
牛牛是一种非常特殊的动物,不同种群的牛有着不同的特征值。现在给定不同种群的牛的特征值 features 和一个目标特征值 target。编写一个函数来计算可以组合出目标特征值所需的最少的动物牛个数。如果无法组合出目标特征值,返回 -1。
#include <vector> #include <algorithm> using namespace std; class Solution { public: // 函数 minAnimalCount 计算组成目标值 target 所需的最少牛的数量。 // 参数 features 是一个包含每头牛特征值的数组,target 是目标特征值。 int minAnimalCount(vector<int>& features, int target) { // 创建一个大小为 target + 1 的 dp 数组,初始值为 target + 1。 // dp[i] 表示构成值 i 所需的最少牛的数量。 // 初始化时,dp[i] 被设为 target + 1,表示这个值还没有计算过。 vector<int> dp(target + 1, target + 1); dp[0] = 0; // dp[0] = 0 表示构成值 0 需要 0 个牛。 // 从 1 开始计算到 target 的每一个目标值 i。 for (int i = 1; i <= target; ++i) { // 对于每个 i,尝试每一个特征值 feature。 for (int feature : features) { // 如果当前目标值 i 大于或等于当前特征值 feature, // 说明可以使用该特征值来构成目标值 i。 if (i >= feature) { // 更新 dp[i],通过 dp[i - feature] + 1 来得到使用最少牛的数量。 // dp[i - feature] 表示已经构成 i - feature 的最少牛的数量, // +1 表示再加上一头特征值为 feature 的牛。 dp[i] = min(dp[i], dp[i - feature] + 1); } } } // 最后返回 dp[target],如果 dp[target] 还是初始值(target + 1), // 说明不能构成目标值,返回 -1,否则返回 dp[target]。 return dp[target] > target ? -1 : dp[target]; } };
02:26
以上就是关于问题牛牛是一种非常特殊的动物,不同种群的牛有着不同的特征值。现在给定不同种群的牛的特征值 features 和一个目标特征值 target。编写一个函数来计算可以组合出目标特征值所需的最少的动物牛个数。如果无法组合出目标特征值,返回 -1。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训