唉,读题。。。。。
注意交换是同时完成的,不是一步一步交换的,下午迷迷糊糊的改了好几次才过。。。
我的思路是,建立一个新字符串数组, itema to itemb 相当于B[b] = A[a] (B是新建的数组,A是原来的数组)
最后把A中未用到的元素放入B的空余位置
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stdio.h>
using namespace std;
int main(){
int N,m,n,i,j,k,a,b;
string str;
vector<string> vec,vec2;
vector<string>::iterator p,p2;
cin>>N;
while(N--){
vec.clear();
vec2.clear();
cin>>m>>n;
for(i=0;i<m;i++){
vec2.push_back(".");
}
for(i=0;i<m;i++){
cin>>str;
vec.push_back(str);
}
for(j=0;j<n;j++){
cin>>a>>b;
vec2[b-1]=vec[a-1];
vec[a-1]=".";
//vec.erase(vec.begin()+a-1);
}
p2=vec2.begin();
for(p=vec.begin();p!=vec.end();p++){
if(*p==".") continue;
while(*p2!=".") p2++;
*p2=*p;
}
for(p=vec2.begin();p!=vec2.end();p++){
cout<<*p;
if(p!=vec2.end()-1)cout<<" ";
}
if(N)cout<<endl;
}
return 0;
}