| ||||||||||
| 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