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; }