#include <bits/stdc++.h> using namespace std; int main() { string s; getline(cin,s); stringstream str(s); string ss; vector<int> num; while(getline(str,ss,',')){ num.push_back(stoi(ss)); } int len=num.size(); int m; cin>>m; vector<int>dp(m+1,0); dp[0]=1; for(int i=0;i<len;i++){ int n=num[i-1]; for(int j=m;j>=n;j--){ dp[j]=dp[j]+dp[j-n]; } } cout<<dp[m]<<endl; return 0; } 为什么输出为0
时间: 2024-04-16 11:28:44 浏览: 117
C++万能头: bits/stdc++.h 下载
在你提供的代码中,输出为0的原因是在第一个for循环中,变量i的初始值为0,导致在计算n时出现越界问题。
你可以将第一个for循环中的变量i的初始值改为1,如下所示:
```cpp
for(int i=1; i<=len; i++){
int n = num[i-1];
for(int j=m; j>=n; j--){
dp[j] = dp[j] + dp[j-n];
}
}
```
这样就可以避免越界问题,正确计算每个数值n对应的情况。
希望这可以解决你的问题!如果还有其他疑问,请随时提问。
阅读全文