zju 1900 ,不知道为什么超时了

languagec 2008-01-08 06:08:10
今天突然被我读懂了zju1900这个题目的意思,我就试着写了一下,写得很烦琐,可是也没有料想到会超时,因为数据量很小. 不知道是不是输入那里有问题? 我不知道. 请高手指点咯..
http://acm.zju.edu.cn/show_problem.php?pid=1900
题目我是这样解的,一个二维数组,存的是每个人听到的树,然后对这个数组排序,然后再对排好序的数组对比是否相等,并计算不相等的数目.
代码如下. 不知道为什么会超时,不知道大家有没有别的办法?

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int equal(int *linefst ,int *linesec)
{
int i=0;
while(i<100 && linefst[i]==linesec[i]) i++;
if(i<100 && linefst[i]>linesec[i]) return 1;
if(i<100 && linefst[i]<linesec[i]) return -1;
return 0;
}

void turnline(int *linefst,int *linesec)
{
int temp[100];
memcpy(temp,linefst,sizeof(temp));
memcpy(linefst,linesec,sizeof(temp));
memcpy(linesec,temp,sizeof(temp));
}

void sortline(int map[][100],int line)
{
int i,j;
for(i=0;i<line;i++)
for(j=2;j<=(line-i);j++)
{
if( equal(map[j],map[j-1])==-1 )
{
turnline(map[j],map[j-1]);
}
}
}

void printmap(int map[][100],int P)
{
int i,j;
for(i=1;i<=P;i++,printf("\n"))
for(j=0;j<100;j++)
{
if(map[i][j]==1)
printf("%d\t",j);
}
}

int main()
{
int P,T;
int map[100][100];
char temp[10];
int person,tree;
int i,count;

while(gets(temp))
{
sscanf(temp,"%d%d%c",&P,&T);
memset(map,0,sizeof(map));
gets(temp);
while(strlen(temp)!=0)
{
sscanf(temp,"%d%d",&person,&tree);
map[person][tree]=1;
gets(temp);
}

sortline(map,P);

for(count=1,i=2;i<=P;i++)
{
if( equal(map[i],map[i-1])==0 )
count++;
}
//printmap(map,P);
printf("%d\n",count);
}
return 0;
}
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rularys 2008-01-10
  • 打赏
  • 举报
回复
mark
quentinliu 2008-01-10
  • 打赏
  • 举报
回复
用hash看看呢?
heroboy2000 2008-01-09
  • 打赏
  • 举报
回复
超时只说明一点:算法错了。
goodluckyxl 2008-01-09
  • 打赏
  • 举报
回复
超时是指什么地方超时 100*100也就10000 数据比较
我可能没看懂到底干什么意思吧
C1053710211 2008-01-09
  • 打赏
  • 举报
回复
并查集是吧,要压缩路径,不过这题的数据量不是那么大吧
languagec 2008-01-09
  • 打赏
  • 举报
回复
to ltc_mouse :
我认为100*100 和10*10 是一样的效率,差别只是对10个数组排序和对100个数组排序,我认为这两者之间效率差别不会太大.

只是,我自己也不知道问题在什么地方
ltc_mouse 2008-01-08
  • 打赏
  • 举报
回复
感觉如果能用位运算,效率应该会高一些~
有没试过随机给100*100的数据,评估下执行时间,^_^

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧