nyoj 题目839 合并

来源:互联网 发布:nginx 域名指定请求 编辑:程序博客网 时间:2024/06/07 01:54


http://acm.nyist.net/JudgeOnline/problem.php?pid=839

合并

时间限制:3000 ms  |  内存限制:65535 KB
难度:0
描述

现在给你两堆数,每个堆中n个数。你的任务是把这两个堆成一个堆,并把合并后的堆中的元素按从小到大的顺序输出。例如n=5时,一个堆是{1,2,3,4,5},第二个堆是{5,6,7,8,9}那么你就应该输出1 2 3 4 5 6 7 8 9。(一堆中可能有重复的数)

输入
第一行输入一个整数T(1≤T≤100),表示有T组测试数据。
每组数据先输入一个整数N(1≤N≤10),表示每个堆中元素的个数。然后输入N个整数A(0≤A<100),最后输入N个整数B(0≤B<100)。
输出
把合并后的堆中的元素按从小到大的顺序输出。
样例输入
251 2 3 4 55 6 7 8 9618 88 43 5 10 78 94 99 37 92 3 52 
样例输出
1 2 3 4 5 6 7 8 9 3 5 10 18 37 43 52 78 88 92 94 99 
#include<stdio.h>#include<string.h>#include<stdlib.h>int cmp(const void *a,const void *b){return *(int *)a-*(int *)b;}int main(){int T,N,i,j,k,a[20],b[20],c[100];scanf("%d",&T);while(T--){memset(a,0,sizeof(a));memset(b,0,sizeof(b));scanf("%d",&N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++)scanf("%d",&b[i]);for(j=0,i=0;i<N;i++)//把a[]中的数存入c[]中,然后把a[],b[]中与c[]相同的都赋-1 {if(a[i]!=-1)c[j]=a[i];else continue;for(k=0;k<N;k++){if(a[k]==c[j])a[k]=-1;if(b[k]==c[j])b[k]=-1;}j+=1;}for(i=0;i<N;i++)//把b[]中的数存入c[]中,然后把c[]中与b[]中相同的值赋-1 {if(b[i]!=-1)c[j]=b[i];else continue;for(k=0;k<N;k++){if(b[k]==c[j])b[k]=-1;}j+=1;}qsort(c,j,sizeof(c[0]),cmp);for(i=0;i<j;i++){printf("%d",c[i]);if(i!=j-1)printf(" ");}printf("\n");}return 0;}

0 0
原创粉丝点击