| ||||||||||
| 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 | |||||||||
动态分配和静态分配为什么差距这么大?只改p的分配方式,一个是0MS,一个超时。为什么?
#include <stdio.h>
void dv (int a,int *t)
{
t[0]=a/100;
a-=t[0]*100;
t[1]=a/10;
t[2]=a-t[1]*10;
}
int main()
{
// int p[1000];//这行超时
int *p=new int[1000];//这行通过
int n,ps,r=1,rg[10],i;
int t[3];
for(n=0;scanf("%d",&p[n])!=EOF;n++)
{}
for(i=0;i<10;i++)rg[i]=0;
ps=0;
while(p[ps]!=100)
{
r++;
dv(p[ps],t);
switch(t[0])
{
case 2:
rg[t[1]]=t[2];
break;
case 3:
rg[t[1]]+=t[2];
if(rg[t[1]]>=1000 )rg[t[1]]-=1000;
break;
case 4:
rg[t[1]]=rg[t[1]]*t[2]%1000;
break;
case 5:
rg[t[1]]=rg[t[2]];
break;
case 6:
rg[t[1]]+=rg[t[2]];
if(rg[t[1]]>=1000 )rg[t[1]]-=1000;
break;
case 7:
rg[t[1]]=rg[t[1]]*rg[t[2]]%1000;
break;
case 8:
rg[t[1]]=p[rg[t[2]]];
break;
case 9:
p[rg[t[2]]]=rg[t[1]];
break;
case 0:
if(rg[t[2]])
ps=rg[t[1]]-1;
break;
}
ps++;
}
printf("%d",r);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator