首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

写一个程序居然出现了system error,从来都没遇到过的,请大家帮小弟我看看,指点一下…

2013-07-01 
写一个程序居然出现了system error,从来都没遇到过的,请大家帮我看看,指点一下……Sorting AgainTime Limit:

写一个程序居然出现了system error,从来都没遇到过的,请大家帮我看看,指点一下……
Sorting Again


Time Limit:   2000MS       Memory Limit:   65535KB 
Submissions:   461       Accepted:   93 

Description新春过后的第一次比赛,相信大家都已经准备好了。那么就为大家热下身吧。问题很简单,对一组输入的数据进行排序。 对输入的数据,我们有如下的约定:所有的输入数据都为正整数,且都不大于300000000。但是输入的数据可能会有重复,排序时,应将重复的数据合并,即同样的数只处理一次。

Input只有一组数据,以0结尾。

Output输出排序后的数据(不含0),其中相同的数应只显示1个。


相邻数之间有一个空格


最后是一个空格和一个换行


Sample Input

1 2 2 3 4 0

Sample Output

1 2 3 4
我的代码:
#include<stdio.h>
int a[300000001];
int main()
{
int m,max,i;
for(i=0;;i++)
{
scanf("%d",&m);
if(m==0) break;
a[m]++;
if(m>max)
max=m;
}
for(i=0;i<=max;i++)
{
if(a[i]>0)
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}

[解决办法]
a[m]++是干什么?是这里错了?
[解决办法]
我运行了没错啊,应该和楼主的编译器有关,重装一下吧
[解决办法]
int a[300000001];
用不着搞这么大吧,
我编译一下挂了,
改小点。
[解决办法]
首先。。数组可能开不了那么大。。那就不能用这种方法。。要先输入所有的数。。然后排序再输出。。
如果能开这么大的数组的话,那max应该初始化。。


#include<stdio.h>
int a[300000001];
int main()
{
int m,max = 0,i;//max要初始化。。
for(i=0;;i++)
{
scanf("%d",&m);
if(m==0) break;
a[m]++;
if(m>max) max=m;
}
for(i=0;i<=max;i++)
{
if(a[i]>0)
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}

[解决办法]
Memory Limit:   65535KB 
[解决办法]
既然不需要记录相同数据的个数,就用1个bit而不是1个int来标记某个数值是否出现过
[解决办法]
引用:
Memory Limit:   65535KB 


++

热点排行