| ||||||||||
| 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 | |||||||||
请大家帮我看看,为什么我老是超时呢?总是1015ms,是不是到这个时间就不运行了?
我的在机子上运行的挺好的,而且每个点只算一次就可以了,不应该会超时啊
Memory:80K Time:1015MS
Language:C++ Result:Time Limit Exceed
Source
#include <iostream.h>
enum error {illegal};
int search(int row,int line,int **height,int R,int C)
{
//[row][line]为当前所在的格子
int g,h,sum,k=0,summary=1;
int direction[4][2]={0,1,1,0,0,-1,-1,0};
while (k<=3)
{
sum=0;
g=row+direction[k][0];
h=line+direction[k][1];//[g][h]为试探的下一个格子,从东侧顺时针试探
if ( g>=0 && g<R && h>=0 && h<C)
if (height[g][h]<height[row][line])
{
if (height[g][h]>8849)
{
height[g][h]=search(g,h,height,R,C);
sum=height[g][h]+1;
}
else sum=height[g][h]+1;
}
if (sum>summary)
summary=sum;
k++;
}
return summary;
}
int main()
{
int i,j,R,C;
int total=0;
int summary=0;
cin>>R>>C;
if (R<1 || R>100 || C<1 || C>100)
return illegal;
int **height=new int *[R];
for (i=0;i<R;i++)
height[i]=new int [C];
for (i=0;i<R;i++)
for (j=0;j<C;j++)
{
cin>>height[i][j];
height[i][j]=height[i][j]+10000;
}
for (i=0;i<R;i++)
for (j=0;j<C;j++)
{
summary=search(i,j,height,R,C);
if (total<summary)
total=summary;
}
cout<<total<<endl;
return 1;
}
非常感谢!
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator