请帮我看一下这个代码的问题 #include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> s(n); vector<int> h(n); for(int i=0;i<n;i++){ cin>>s[i]; } sort(s.begin(),s.end()); for(int a=0;a<n;a++){ for(int b=0;b<n;b++){ for(int c=0;c<n;c++){ int d=m-s[a]-s[b]-s[c]; if(binary_search(s.begin(),s.end(),d)){ h.push_back(s[a]); h.push_back(s[b]); h.push_back(s[c]); h.push_back(d); cout<<"["; for(int i=0;i<4;i++){ cout<<h[i]; } cout<<"]"<<endl; h.clear(); } } } } return 0; }
时间: 2024-02-14 13:30:01 浏览: 42
这段代码的问题是在输出结果时没有正确地输出数组h的元素。在循环中,你使用了`h.push_back()`将元素添加到数组h中,但在输出时却没有按照正确的方式输出数组h的元素。你需要在输出循环中使用索引来访问数组h的元素,并且每个元素之间需要加上逗号进行分隔。
以下是修改后的代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<int> s(n);
vector<int> h(n);
for(int i=0;i<n;i++){
cin>>s[i];
}
sort(s.begin(),s.end());
for(int a=0;a<n;a++){
for(int b=0;b<n;b++){
for(int c=0;c<n;c++){
int d=m-s[a]-s[b]-s[c];
if(binary_search(s.begin(),s.end(),d)){
h.push_back(s[a]);
h.push_back(s[b]);
h.push_back(s[c]);
h.push_back(d);
cout<<"[";
for(int i=0;i<4;i++){
cout<<h[i];
if(i != 3) cout<<", ";
}
cout<<"]"<<endl;
h.clear();
}
}
}
}
return 0;
}
```
这样修改后,代码应该可以正确地输出结果。