作者在 2013-10-16 12:45:26 发布以下内容
Problem Description
A=(3,5,8,11)
B=(2,6,8,9,11,15,20)
则
C=(2,3,5,6,8,8,9,11,11,15,20)
Input
输入数据首先包含一个整数T,表示测试实例的个数,然后是T组测试数据。
每组测试数据占两行,其中第1行首先是A的元素个数m,之后是m个元素。第2行首先是B的元素个数n,之后是n个元素。(1<=m,n<=100)
Output
对于每组测试数据。分别输出将A、B合并后的数组C的全部元素。元素之间以空格分隔,最后一个数据之后没有空格。
Sample Input
2 2 1 2 1 3 4 3 5 8 11 7 2 6 8 9 11 15 20Sample Output
1 2 3 2 3 5 6 8 8 9 11 11 15 20#include<iostream>
using namespace std;
int main()
{
int t,m,n,tem,a[200];
cin>>t;
for(int i=0;i<t;i++)
{
cin>>m;
for(int j=0;j<m;j++)
{
cin>>a[j];
}
cin>>n;
for(int x=m;x<m+n;x++) //直接从第m个数开始,接着原来的集合往里出入元素,至于为什么是n+m,可以用实际的例子来试试。
{
cin>>a[x];
}
for(int b=0;b<m+n-1;b++) //此处的m+n-1是因为,两个数进行比较的话就只比较了m+n-1次,也就是循环进行了n+m-1次。
{
for(int c=0;c<m+n-b-1;c++) //这里进行的循环,首先进行外循环,然后在进行内循环,当内循环进行结束时,在回到外循环,让第一个数与第二个数进行比较,当第一个数比后者大时,吧第一个数赋予第二个数,进行类似的循环。
{
if(a[c]>a[c+1])
{
tem=a[c];
a[c]=a[c+1];
a[c+1]=tem;
}
}
}
/* for(int d=0;d<m+n;d++)
{
cout<<a[d]; //这里的循环用来进行输出的
if(d<m+n-1) //这里进行的是,输出数字之间会有几个空格,通过if选择来控制
cout<<' '; //因为有n+m个数,所以只需有n+m-1个空格就行了
}*/
cout<<endl;
}
return 0;
}