| ||||||||||
| 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:难道是作业??瞬间很多人做哦In Reply To:想不出我的代码为什么会超时...希望大家多多指教 Posted by:lc86 at 2005-03-02 12:15:02 > #include <stdio.h>
> #include <memory.h>
> #include <stdlib.h>
> #include <malloc.h>
> #define map(x,y) *(map+(x)*n+(y));
> int *map;
> int n,m;
> int main()
> {
> int *value,*map,real;
> int i,j,x,y,ii,jj,b=0,k;
> scanf("%d%d",&n,&m);
> map=(int *)malloc(n*m*sizeof(int));
> value=(int *)malloc(n*m*sizeof(int));
> memset(value,0,n*m*sizeof(int));
> for(i=0;i<n*m;i++)
> scanf("%d",map+i);
> b=1;
> while(b)
> {
> b=0;ii=0;
> for(i=0;i<m;i++)
> {
> for(j=0;j<n;j++,ii++)
> for(k=0;k<4;k++)
> {
> x=j;y=i;
> switch(k)
> {
> case 0:y++;jj=ii+n;break;
> case 1:x++;jj=ii+1;break;
> case 2:y--;jj=ii-n;break;
> case 3:x--;jj=ii-1;break;
> default: return 1;
> }
> if((x<0)||(y<0)||(x>=n)||(y>=m))continue;
> if(*(map+ii)<*(map+jj)&&(*(value+jj)+1>*(value+ii)))
> {
> value[ii]=value[jj]+1;
> b=1;
> }
> }
> }
> }
> for(i=0;i<n*m;i++)
> {
> if(*(value+i)>b)b=*(value+i);
> }
> printf("%d",b+1);
> free(map);
> free(value);
> return 1;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator