| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:i didn't, bst is enough efficientIn Reply To:i didn't, bst is enough efficient Posted by:frkstyc at 2005-05-27 21:35:34 不是TLE啊,是RUNTIME ERROR,我用小数据测试过是没问题的,数组也足够大,真是好奇怪.
贴个code,高手帮忙看一下
#include <stdio.h>
#include <string>
struct node
{
char name[100];
long num;
long left,right;
};
node specie[11000];
char c;
long total,i,j;
bool flag;
char temp[100];
void putintotree(char spname[], int position)
{
int x;
if (strcmp(specie[position].name,"")==0)
{strcpy(specieposition].name,spname); specie[position].num++; }
else
{
x=strcmp(spname,specie[position].name);
if (x==0) specie[position].num++;
if (x<0)
{
if (specie[position].left==0)
specie[position].left=total;
putintotree(spname,specie[position].left);
}
if (x>0)
{
if (specie[position].right==0)
specie[position].right=total;
putintotree(spname,specie[position].right);
}
}
}
void printtree(int position)
{
if (specie[position].left!=0) printtree(specie[position].left);
printf("%s %.4lf\n",
specie[position].name,double(specie[position].num)*100/total);
if (specie[position].right!=0)
printtree(specie[position].right);
}
int main()
{
//freopen("input.txt","r",stdin);
memset(specie,0,sizeof(specie));
total=0; flag=false;
while (gets(temp) && strcmp(temp,"")!=0)
{
total++;
if (flag==true) printf("\n");
else flag=true;
putintotree(temp,1);
while (gets(temp))
{
if (strcmp(temp,"")!=0)
{
total++;
putintotree(temp,1);
}
else break;
}
if (total!=0) printtree(1);
total=0;
memset(specie,0,sizeof(specie));
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator