#include <bits/stdc++.h> using namespace std; int main() { int n; vector<int>num; int num1; int k = 0; while (cin >> num1) { if (num1 == '\n') { break; } num.push_back(num1); } int m; cin >> m; vector<int> dp(m + 1, 0); dp[0] = 1; int len = num.size(); for(int i=0;i<len;i++)cout<<num[i]<<endl; for (int i = 1; i <= len; i++) { int n = num[i - 1]; for (int j = 0; j <= m; j++) { if (j >= n) { dp[j] = dp[j] + dp[j - n]; } } } cout << dp[m] << endl; return 0; } 为什么输入的数据进不了容器
时间: 2024-04-16 07:27:31 浏览: 122
根据你提供的代码,输入的数据无法进入容器的原因是你使用错误的比较方式来判断输入是否为换行符。
在你的代码中,你使用字符字面量 `'\n'` 来与输入的整数 `num1` 进行比较,以确定是否退出循环。然而,字符字面量 `'\n'` 实际上代表换行符,而不是整数值。
要解决这个问题,你可以将条件改为比较输入的整数值是否等于 0 或其他适当的值。通常情况下,我们可以假设输入的整数值不会为 0。
修正后的代码应该类似于:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
vector<int> num;
int num1;
int k = 0;
while (cin >> num1 && num1 != 0) {
num.push_back(num1);
}
int m;
cin >> m;
vector<int> dp(m + 1, 0);
dp[0] = 1;
int len = num.size();
for (int i = 0; i < len; i++) {
int n = num[i];
for (int j = 0; j <= m; j++) {
if (j >= n) {
dp[j] = dp[j] + dp[j - n];
}
}
}
cout << dp[m] << endl;
return 0;
}
```
请注意,我假设输入的整数值不会为 0 作为循环结束的条件。如果你的输入有其他要求,请相应地调整条件。另外,请确保你提供的输入数据符合所需的格式和范围。如果问题仍然存在,请提供更多的信息以便我能够帮助你解决。
阅读全文