import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer[] nums = Arrays.stream(sc.nextLine().split(",")).map(Integer::parseInt).toArray(Integer[]::new); int bag = Integer.parseInt(sc.nextLine()); System.out.println(getResult(nums, bag)); } private static int getResult(Integer[] nums, int bag) { int n = nums.length; int[] dp = new int[bag + 1]; dp[0] = 1; for (int i = 1; i <= n; i++) { int num = nums[i - 1]; for (int j = bag; j >= num; j--) { dp[j] = dp[j] + dp[j - num]; } } return dp[bag]; } }翻译成C++
时间: 2024-04-16 09:27:31 浏览: 140
以下是将提供的 Java 代码翻译成 C++ 的版本:
```cpp
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int getResult(vector<int>& nums, int bag) {
int n = nums.size();
vector<int> dp(bag + 1, 0);
dp[0] = 1;
for (int i = 1; i <= n; i++) {
int num = nums[i - 1];
for (int j = bag; j >= num; j--) {
dp[j] = dp[j] + dp[j - num];
}
}
return dp[bag];
}
int main() {
string input;
getline(cin, input);
stringstream ss(input);
string item;
vector<int> nums;
while (getline(ss, item, ',')) {
nums.push_back(stoi(item));
}
int bag;
cin >> bag;
cout << getResult(nums, bag) << endl;
return 0;
}
```
请注意,将 Java 代码翻译成 C++ 时,需要进行一些语法和函数的转换。在此例中,使用 `vector` 替代了 Java 中的 `ArrayList`,使用 `stringstream` 进行字符串分割,使用 `stoi` 将字符串转换为整数等。此外,还进行了一些语法上的调整。
如果你有更多的问题或需要进一步的帮助,请随时提问。
阅读全文