2008-08-19

关于C和C++的O/I

早有耳闻,C++的不怎么好~~
一直都还不太相信。。
今天倒是亲眼目睹了我的错误~.~

在做RQNOJ的第133题得时候我用C++的I/O做的,80......

看下:

状态: Unaccepted
测评机: Xeond[6]
得分: 80分
提交日期: 2008-8-18 18:26:00
有效耗时: 1860毫秒
测试结果1: 通过本测试点有效耗时63:ms
测试结果2: 通过本测试点有效耗时62:ms
测试结果3: 通过本测试点有效耗时94:ms
测试结果4: 通过本测试点有效耗时109:ms
测试结果5: 通过本测试点有效耗时422:ms
测试结果6: 通过本测试点有效耗时594:ms
测试结果7: 通过本测试点有效耗时469:ms
测试结果8: 选手程序运行超过时限
测试结果9: 选手程序运行超过时限
测试结果10: 通过本测试点有效耗时47:ms

源程序:
#include
using namespace std;
struct Tree
{
long d;
Tree *R,*L;
long sum;
}*T=NULL,*Node=NULL;

void Insert(Tree *&T,Tree *Node)
{
if(T==NULL)
{
T=Node;
T->sum=1;
return;
}
if(Node->d<=T->d)
{
if(Node->d==T->d)
{
T->sum++;
}
else
Insert(T->L,Node);
}
else
Insert(T->R,Node);
}

void Print(Tree *T)
{
if(T==NULL)
return;
Print(T->L);
cout<d<<" "<sum<R);
}
int main()
{
long n,t;
cin>>n;
while(n>0)
{
cin>>t;
Node=new Tree;
Node->d=t;
Node->R=NULL;
Node->L=NULL;
Insert(T,Node);
n--;
}
Print(T);
return 0;
}


而后用C的I/O做的:


状态: Accepted
测评机: Xeond[6]
得分: 100分
提交日期: 2008-8-18 18:37:00
有效耗时: 1217毫秒
测试结果1: 通过本测试点有效耗时62:ms
测试结果2: 通过本测试点有效耗时46:ms
测试结果3: 通过本测试点有效耗时47:ms
测试结果4: 通过本测试点有效耗时63:ms
测试结果5: 通过本测试点有效耗时109:ms
测试结果6: 通过本测试点有效耗时141:ms
测试结果7: 通过本测试点有效耗时125:ms
测试结果8: 通过本测试点有效耗时312:ms
测试结果9: 通过本测试点有效耗时265:ms
测试结果10: 通过本测试点有效耗时47:ms

源程序:

#include
struct Tree
{
long d;
Tree *R,*L;
long sum;
}*T=NULL,*Node=NULL;

void Insert(Tree *&T,Tree *Node)
{
if(T==NULL)
{
T=Node;
T->sum=1;
return;
}
if(Node->d<=T->d)
{
if(Node->d==T->d)
{
T->sum++;
}
else
Insert(T->L,Node);
}
else
Insert(T->R,Node);
}

void Print(Tree *T)
{
if(T==NULL)
return;
Print(T->L);
printf("%ld %ld\n",T->d,T->sum);
Print(T->R);
}
int main()
{
long n,t;
scanf("%ld",&n);
while(n>0)
{
scanf("%ld",&t);
Node=new Tree;
Node->d=t;
Node->R=NULL;
Node->L=NULL;
Insert(T,Node);
n--;
}
Print(T);
return 0;
}


不知道你们注意吗,在用C输出的时候最大耗时是312ms,而C++....我不想再说什么了~~

以后学C++的朋友要注意,最好要用C的O/I。。

终于AC了。。。
有些题目是没什么错,但是要考虑时空的。。


..

没有评论: