【基础】砝码称重c++
时间: 2024-06-16 09:02:19 浏览: 113
在C++中,使用砝码称重通常涉及到一个简单的数学问题,可以使用数组或向量来存储不同重量的砝码,然后通过遍历和比较找到组合来达到给定的总重量。这是一个基本的动态规划或者背包问题的简化版。
以下是一个简单的示例代码,假设我们有一个砝码数组`weights`,每个元素代表一个砝码的重量,我们想要找出如何使用这些砝码来达到目标重量`target`:
```cpp
#include <iostream>
#include <vector>
// 假设weights是一个非降序的数组,存储了不同重量的砝码
std::vector<int> weights = {1, 2, 5}; // 示例砝码:1g, 2g, 5g
int targetWeight = 10; // 示例目标重量
std::vector<bool> used(weights.size(), false); // 用于记录砝码是否被使用
void findWeight(int weight) {
if (weight == targetWeight) {
printSolution(used);
return;
}
// 遍历所有砝码
for (int i = 0; i < weights.size(); ++i) {
if (weights[i] <= weight && !used[i]) {
used[i] = true; // 使用这个砝码
findWeight(weight + weights[i]); // 尝试增加砝码
used[i] = false; // 如果没用到,还原状态
}
}
}
void printSolution(std::vector<bool>& used) {
if (used.empty()) return;
std::cout << "Solution: ";
for (int i = 0; i < used.size(); ++i) {
if (used[i]) std::cout << weights[i] << " ";
}
std::cout << "\n";
}
int main() {
findWeight(0);
return 0;
}
```
在这个例子中,`findWeight`函数通过递归尝试添加每一个砝码,直到达到或超过目标重量。如果找到解决方案,就调用`printSolution`来展示如何组合砝码。