学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 21 123
发新话题
打印

第一次在贵论坛求助..望大虾帮忙

第一次在贵论坛求助..望大虾帮忙

给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.


Input


每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.


Output


针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.


Sample Input


1 2
1
2 3
1 2
1
1 2
Sample Output


1 2 3
1 2
Author


xhd


Source


计算机学院ACM大学生程序设计竞赛(2006’5)


Recommend


lxj

-.- 看起来这题没啥特别 [第N次RE后,无语] 错误提示是:读写了错误的内存地址...
#include <cstdio>
#include <cstdlib>
int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main(){
    int mA,nB;
    while(scanf("%d%d",&mA,&nB)!=EOF&&mA&&nB)
    {
        
        int i,orz,j=0;
        long int cnt[40000]={0};
        int *C=new int[mA+nB];
        for(i=0;i<mA+nB;++i)
        {
            scanf("%d",&orz);
            if(!cnt[orz])
            {
                ++cnt[orz];
                C[j]=orz;
                ++j;
            }
        }
        qsort(C,j,sizeof(int),compare);
        for(i=0;i<j;++i)
        printf("%d ",C[i]);
        printf("\n");
        delete []C;
    }
    return 0;
}

TOP

原来你对int的范围的概念很有问题

C/C++讨论群:46520219 3996098 21035626 57909089
免费的C/C++算法学习论坛:http://yzfy.org

TOP

能对这样函数了解也算是高手了...燕子的意思是要size_t?
学习需要安静。。海盗要重新来过。。

TOP

既然决定用桶排了,何必最后加一个快排呢……Orz……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

int是32bit...最大值为2147483647

TOP

一时糊涂了
#include <climits>
INT_MAX
那这题哪位给个思路..

TOP

cnt[orz] 也敢用?

TOP

本人菜鸟 别批评了 给个思路 ..

TOP

如果没有什么限制的话,简单点,分别排序后做合并不就行了吗?

TOP

楼上很正确, m/n最大值不是10000么? 定义两个size为10000的数组, 结果定义为20000的数组, 排序后合并就行了

TOP

 21 123
发新话题