以下代码可以正常运行:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
int n,q;
cin >> n >> q;
vector<string> s(n+1);
for (int i=0;i<n;++i){
string str;
cin >> str;
s[i+1]=str;
}
for (int qwq=0;qwq<q;++qwq){
int t;
cin >> t;
if (t==1){
int x,y,i;
cin >> x >> y >> i;
s[y].insert(i,s[x]);
}else{
int x;
cin >> x;
cout<<s[x]<<endl;
}
}
return 0;
}
而以下代码不能正常运行( q 次操作还没输入):
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(){
int n,q;
cin >> n >> q;
vector<string> s(n+1);
for (int i=0;i<n;++i){
string str;
getline(cin,str);//就只有这里改了
s[i+1]=str;
}
for (int qwq=0;qwq<q;++qwq){
int t;
cin >> t;
if (t==1){
int x,y,i;
cin >> x >> y >> i;
s[y].insert(i,s[x]);
}else{
int x;
cin >> x;
cout<<s[x]<<endl;
}
}
return 0;
}
话说这个题数据有点弱,题目没保证字符串有无空格,而第一个代码空格没判断,竟然还过了(本想着洛谷上交了试一下)。建议加一点字符串是空格的数据