本题测试用例比较坑,一开始我是按照两两按照序号对比,然后每次添加两个,发现过不了,然后就看了一下网上大神写的,发现应该是如果第一个小于等于第二个数,那么第一个指针偏移,只能说明用例不清楚,然后输入的时候用cin输入可以输入整数,然后char ch,用ch接收字符判断即可,用vector存储。
//@author:hairu,wu
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v1,v2;
int num;
char str;
while(true){
cin >> num;
v1.push_back(num);
cin>> str;
if(str=='.') break;
else{
cin >> str;
}
}
while(true){
cin >> num;
v2.push_back(num);
cin >> str;
if(str=='.') break;
else{
cin >> str;
}
}
//进行叠加
vector<int> v3;
int size1=v1.size();
int size2=v2.size();
int i=0;
int j=0;
while(i<size1 && j<size2){
int t1=v1[i];
int t2=v2[j];
if(t1<=t2){ //这里注意一下,<= ,如果写<,就过不了
v3.push_back(t1);
i++;
}else{
v3.push_back(t2);
j++;
}
}
while(i<size1){
v3.push_back(v1[i]);
i++;
}
while(j<size2){
v3.push_back(v2[j]);
j++;
}
for(int i=0;i<v3.size();i++){
cout<<v3[i];
if(i!=v3.size()-1) cout<<"->";
else cout<<"->NULL";
}
return 0;
}