reverse函数
注意,我卡在80%卡了很久,主要是vector反转的时候越界了,我开始想着不可能越界的,以为是输入的时候有问题,后来改了一下反转的地方,终于过了。真的是代码不规范,bug卡一年。
#include<bits/stdc++.h>
using namespace std;
int k=0;
vector<int> v;
int main(){
string str;
getline(cin, str);
int t=0;
for(int i = 0; i <= str.size(); i++){
if(str[i] == ' ' || i == str.size()){
if(t!=0) v.push_back(t);
t = 0;
}else{
t = t * 10 + str[i] - '0';
}
}
cin>>k;
if(v.size()==0){ //数组长度为0
cout<<endl;
return 0;
}
if(k!=1){ //间隔为非1反转
for(int i = 0; i <v.size(); i+=k){
if(i+k <= v.size())
reverse(v.begin()+i, v.begin()+i+k);
}
}
for(int i = 0; i < v.size(); i++){
cout<<v[i];
if(i!=v.size()-1) cout<<" ";
else cout<<endl;
}
return 0;
}
京公网安备 11010502036488号