HDU1800总是WA

#include<stdio.h>#include<stdlib.h>#include<string.h>intcmp(constvoid*a,constvoid*b){... #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b>0?-1:1;
}
struct data
{
long level;
int flag;
}a[3001];
int main()
{
long n,i,j,sum,t;
while(scanf("%d",&n)!=EOF)
{
sum=0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
scanf("%ld",&a[i].level);
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n;i++)
{
if(a[i].flag==1) continue;
sum++;
t=a[i].level;
for(j=i+1;j<n;j++)
{
if(a[j].flag==1) continue;
if(a[j].level<t)
{
t=a[j].level;
a[j].flag=1;
}
}
}
printf("%ld\n",sum);
}
return 0;
}
展开
 我来答
porker2008
2012-04-29 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void *a,const void *b)
{
__int64 na = *((__int64*)a);
__int64 nb = *((__int64*)b);
return na>nb?-1:na<nb?1:0;
}
struct data
{
__int64 level;
int flag;
}a[3001];
int main()
{
long n,i,j,sum;
__int64 t;
while(scanf("%d",&n)!=EOF)
{
sum=0;
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
scanf("%I64d",&a[i].level);
qsort(a,n,sizeof(a[0]),cmp);
for(i=0;i<n;i++)
{
if(a[i].flag==1) continue;
sum++;
t=a[i].level;
for(j=i+1;j<n;j++)
{
if(a[j].flag==1) continue;
if(a[j].level<t)
{
t=a[j].level;
a[j].flag=1;
}
}
}
printf("%ld\n",sum);
}
return 0;
}
更多追问追答
追问
这个是什么问题?
麻烦指出来,数据类型定义问题?
追答
level用64位。
还有comparator在不分先后的情况下需要返回0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式