| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2366 人关注过本帖
标题:[求助]ACM题,合并两个集合的元素的代码
取消只看楼主 加入收藏
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
 问题点数:0 回复次数:7 
[求助]ACM题,合并两个集合的元素的代码

{A} + {B}

Time Limit:5000MS Memory Limit:65536K
Total Submit:15 Accepted:1

Description

Given Two collections {A} and {B}.
Note: there are no two same elements in each collections.

Input

The problem has many test cases.
For each case,there are three lines.
The first line contains two integer n and m (0 < n,m <= 10000). n is the number of {A}'s elements, and m is the number of {B}'s elements.
The second line is the elements of {A}.
The third line is the elements of {B}.

Output

For each case, output one line containing all the elements in the combination of collections {A} and {B}. You should order the elements by ascend(from small one to big one).

Sample Input


1 2
1
2 3
1 2
1
1 2


Sample Output


1 2 3
1 2

我的代码
//07-8-7 zist 2507 {A} + {B}
#include <stdio.h>
void SortBullbe(int *a ,int n)
{
int i ,j ,k ,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}

main()
{
int i ,j ,k ,n ,m ,l ,count=0 ,flag=0;
int a[10005] ,b[10005] ,c[20005];
while(scanf("%d%d",&n,&m)!=EOF)
{
count=0 ;
flag=0;
for(i=0;i < n;i++)
{
scanf("%d",&a[i]);
}
SortBullbe(a ,n) ;
for(i=0;i < m;i++)
{
scanf("%d",&b[i]);
}
SortBullbe(b ,m) ;
if(a[n-1]<b[0])
{
for(i=0 ;i <n;i++)
{
printf("%d ",a[i]);
}
for(i=0 ;i <m;i++)
{
printf("%d ",b[i]);
}
}
else
{
k=0; l=0 ;
for(i=0 ;i < n;i++)
{
for(j=i+k;j < m;j++)
{
if(a[i] < b[j])
{
c[count++]=a[i];
break;
}
if(a[i]>b[j])
{
c[count++]=b[j];
l++ ;
continue;
}
if(a[i]==b[j])
{
c[count++]=a[i];
break;
}
}
if(l>0)
k=l;
if(j==m)
{
flag=1;
break;
}
}
if(flag==0)
{
for( ;j < m-1 ;j++)
{
c[count++]=b[j+1];
}
}
if(flag==1)
{
for( ;i < n;i++)
{
c[count++]=a[i];
}
}
for(i=0 ;i <count;i++)
{
printf("%d ",c[i]);
}
}
printf("\n");
}
}
大家帮忙看下错误,我在 本地调试的时候通过了的,可提交上去就是说我的answer error,我实在看不出错误了,大家帮忙看下,

[此贴子已经被作者于2007-8-7 14:05:32编辑过]

搜索更多相关主题的帖子: ACM 元素 代码 
2007-08-07 14:02
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 
貌似取个标题还那么难的,一直发不上来 。大家帮忙看下我的错误
2007-08-07 14:03
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 
我的是这个思路啊,调试的时候没什么问题的,但提交的时候就是说我answer error,很是郁闷啊
2007-08-07 14:30
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 
就没哪个帮我看下代码啊!~
虽然我没写注释,也不要这样对我啊
2007-08-07 14:57
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 

谢谢大家的热心帮助,因为后来我自己解决了,就没看自己的帖子了
我最后的代码 通过了
代码如下:

Memory:196K Time:2078MS
Language:GCC Result:Accepted

Source
#include <stdio.h>

void SortBullbe(int *a ,int n)
{
int i ,j ,k ,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}

main()
{
int i ,j ,k ,n ,m;
int a[20005],b[20005];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i < n;i++)
{
scanf("%d",&a[i]);
}
for(;i < m+n;i++)
{
scanf("%d",&a[i]);
}
SortBullbe(a ,m+n) ;
b[0]=a[0];
j=0 ;
for(i=1;i < m+n;i++)
{
if(b[j]!=a[i])
b[++j]=a[i];
}
for(k=0;k < j;k++)
{
printf("%d ",b[k]);
}
printf("%d\n" ,b[j]);
}
}


2007-08-07 22:31
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 
以下是引用leeco在2007-8-7 22:35:39的发言:
楼主把online judge的地址贴一下,我去做做看。

因为是我们学校的ACM网站是属于内部网的,外部不能访问,所以我没贴的.~

2007-08-07 22:47
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 
Memory:488K Time:375MS
Language:G++ Result:Accepted
提交的结果
2007-08-07 23:14
liulanghan
Rank: 1
等 级:禁止访问
帖 子:104
专家分:0
注 册:2007-5-5
收藏
得分:0 

测试数据是无序的~!
你们都好厉害的 啊~!

2007-08-07 23:26
快速回复:[求助]ACM题,合并两个集合的元素的代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027879 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved