http://acm.hunnu.edu.cn/online/?action=problem&type=show 这是一道合并问题 求大牛帮忙ac

可试用我的账号提交账号12345密码12345... 可试用我的账号提交
账号 12345
密码 12345
展开
 我来答
百度网友28b4182
2013-05-14 · TA获得超过7220个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1796万
展开全部
AC了,看帐号。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<time.h>
#include<math.h>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
const int MAX=110000;
int c[MAX];
void read(int n)
{
int x;
while(n--)
{
scanf("%d",&x);
c[x]++;
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
memset(c,0,sizeof(c));
read(n);
scanf("%d",&n);
read(n);
bool flag=false;
int j;
for(int i=0;i<MAX;i++)
{
j=c[i];
while(j--)
{
if(flag)putchar(' ');
printf("%d",i);
flag=true;
}
}
puts("");
}
return 0;
}
/*
1
1 3 10

*/
追问
谢谢你的回答,可不可以请你做一点点解释
追答
因为数字在0到10万之间,所以我们只要统计一下这些数字有几个,最后输出就行了。当然对于题目中说了的两个有序的数列,可以有O(n+m)的算法,就是每一次取两个数字中头最小的一个放到另一个数列中,然后那个头++,哪个小就哪个头++一直取完就行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式