C语言结构体的有关问题。oj上一直runtime error
C语言结构体的问题。。oj上一直runtime error
题目是这样
有多组测试数据,少于10。 每组数据两个数N (0 < N < = 10^6)和K ( 0< K <= 10 ,K < N ),表示有N位候选人,要从中选出排名前K的富豪,然后是N位候选人的名字和财产(亿元)。 (名字是由不超过60个字母组成的字符串 ,任意两个人的财产都不一样)
然后我写的代码在这里
#include<stdio.h>
#include<stdlib.h>
struct Data
{
char name[500];
double num;
};
struct Data *liebiao=(struct Data *) malloc(10000000 * sizeof(int));
struct Data *liebiao2=(struct Data *)malloc(10000000 * sizeof(int));
int main()
{
int a,b,i,j,n,x=1,max=0;
for(n=0;n<10;n++)
{
scanf("%d %d",&a,&b);
for(i=0;i<a;i++)
{
scanf("%s %lf",liebiao[i].name,&liebiao[i].num);
}
for(i=0;i<a;i++)
{
for(j=i+1;j<a;j++)
{
if(liebiao[i].num<liebiao[j].num)
{
liebiao2[i]=liebiao[i];
liebiao[i]=liebiao[j];
liebiao[j]=liebiao2[i];
}
}
}
if(x==1)
{
for(i=0;i<b;i++)
{
printf("%s %g\n",liebiao[i].name,liebiao[i].num);
}
}
else
{
printf("\n");
for(i=0;i<b;i++)
{
printf("%s %g\n",liebiao[i].name,liebiao[i].num);
}
}
x++;
}
return 0;
}
最开始没用malloc然后发现数组定义成1000000之后就不能编译了。。然后现在用malloc之后提交到OJ上还是runtime error要怎么改才可以呢?
没用链表写,就想知道下不用链表该怎么改呢?
------解决思路----------------------
改成1000000 这么大的数组,直接栈溢出了
楼主的算法有问题,去网上搜索一下查找第N大的算法
这个用不用链表都没有影响
------解决思路----------------------
可以用STL中的multimap来做。。
题目是这样
有多组测试数据,少于10。 每组数据两个数N (0 < N < = 10^6)和K ( 0< K <= 10 ,K < N ),表示有N位候选人,要从中选出排名前K的富豪,然后是N位候选人的名字和财产(亿元)。 (名字是由不超过60个字母组成的字符串 ,任意两个人的财产都不一样)
然后我写的代码在这里
#include<stdio.h>
#include<stdlib.h>
struct Data
{
char name[500];
double num;
};
struct Data *liebiao=(struct Data *) malloc(10000000 * sizeof(int));
struct Data *liebiao2=(struct Data *)malloc(10000000 * sizeof(int));
int main()
{
int a,b,i,j,n,x=1,max=0;
for(n=0;n<10;n++)
{
scanf("%d %d",&a,&b);
for(i=0;i<a;i++)
{
scanf("%s %lf",liebiao[i].name,&liebiao[i].num);
}
for(i=0;i<a;i++)
{
for(j=i+1;j<a;j++)
{
if(liebiao[i].num<liebiao[j].num)
{
liebiao2[i]=liebiao[i];
liebiao[i]=liebiao[j];
liebiao[j]=liebiao2[i];
}
}
}
if(x==1)
{
for(i=0;i<b;i++)
{
printf("%s %g\n",liebiao[i].name,liebiao[i].num);
}
}
else
{
printf("\n");
for(i=0;i<b;i++)
{
printf("%s %g\n",liebiao[i].name,liebiao[i].num);
}
}
x++;
}
return 0;
}
最开始没用malloc然后发现数组定义成1000000之后就不能编译了。。然后现在用malloc之后提交到OJ上还是runtime error要怎么改才可以呢?
没用链表写,就想知道下不用链表该怎么改呢?
------解决思路----------------------
改成1000000 这么大的数组,直接栈溢出了
楼主的算法有问题,去网上搜索一下查找第N大的算法
这个用不用链表都没有影响
------解决思路----------------------
可以用STL中的multimap来做。。