描述
编写一个程序,对输入的两组数据进行合并。这两组数据均按照从小到大的顺序排列,且每组数据内部没有重复的元素。要求在合并以后,仍然保持从小到大的顺序排列,并且去掉可能出现的重复的元素。
说明:每组数据最少有1个,最多不超过100个。其中,每个数据都是一个整数,可能是正数或负数。每组数据内部没有重复的元素,但两组数据之间可能有重复的元素。
输入
输入有三行。第一行是2个正整数M和N,分别表示两组数据的元素个数。第二行有M个整数,表示第一组数据。第三行有N个整数,表示第二组数据。
输出
输出只有一行,包括若干个整数,即合并以后的结果。相邻的两个整数之间用一个空格隔开。
输入样例
4 6
1 3 7 8
1 3 4 5 6 8
输出样例
1 3 4 5 6 7 8
我的代码如下:
#include <iostream>
using namespace std;
#define N 100
int main()
{
int a[N]={ 0 }, b[N]={ 0 };
int i,j,k,anum,bnum,c[N+N];
cin >> anum >> " " >> bnum;
for(i=0;i<anum;i++)
{
cin >> a[i];
}
for(j=0;j<bnum;j++)
{
cin >> b[j];
}
i=0,j=0,k=0;
while(i < anum && j < bnum)
{
if(a[i]>=b[j])
{
c[k]=b[j];
k++;
j++;
}
else
{
c[k]=a[i];
k++;
i++;
}
if(i!=anum)
{
for(i;i<anum;i++)
{
c[k]=a[i];
k++;
}
}
else
{
for(j;j<bnum;j++)
{
c[k]=b[j];
k++;
}
}
}
for(i = 0; i < anum + bnum; i++)
{
cout << c[i] << " ";
}
return 0;
}