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 |
这道题不是用广度搜索吗?高人来看一下,严重超时#include <stdio.h> int r,c; struct abc{ int i,j; int step; }que[10000000],tem; int search(int m,int n,int a[101][101]){ int front,rear; int i,j; int max=0; front=0; rear=0; que[rear].i=m; que[rear].j=n; que[rear].step=1; rear=(rear+1)%10000000; while(front!=rear) { tem.i=que[front].i; tem.j=que[front].j; tem.step=que[front].step; if(max<tem.step) max=tem.step; front=(front+1)%10000000; if(a[tem.i-1][tem.j]<a[tem.i][tem.j] && tem.i>1) { que[rear].i=tem.i-1; que[rear].j=tem.j; que[rear].step=tem.step+1; rear=(rear+1)%10000000; } if(a[tem.i+1][tem.j]<a[tem.i][tem.j]&& tem.i<r) { que[rear].i=tem.i+1; que[rear].j=tem.j; que[rear].step=tem.step+1; rear=(rear+1)%10000000; } if(a[tem.i][tem.j-1]<a[tem.i][tem.j] && tem.j>1) { que[rear].i=tem.i; que[rear].j=tem.j-1; que[rear].step=tem.step+1; rear=(rear+1)%10000000; } if(a[tem.i][tem.j+1]<a[tem.i][tem.j] && tem.j<c) { que[rear].i=tem.i; que[rear].j=tem.j+1; que[rear].step=tem.step+1; rear=(rear+1)%10000000; } } return max; } int main() { int i,j; int temp; int a[101][101]; int max; while(scanf("%d%d",&r,&c)!=EOF) { for(i=1;i<=r;i++){ for(j=1;j<=c;j++){ scanf("%d",&a[i][j]); } } max=0; for(i=1;i<=r;i++){ for(j=1;j<=c;j++){ temp=search(i,j,a); if(max<temp) { max=temp; } } } printf("%d\n",max); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator