北大acm1088,提交runtime error,谁能帮看一下

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:49:31
#include<stdio.h>
#define M 100
int a[M][M];
int b[M][M];
int g[4]={0,1,-1,0};
int h[4]={1,0,0,-1};
int max=0;
int m=0;
int row=0;
int col=0;
int j=0;

void bb(int o,int x,int y);
int main(void)
{ int i;
int p,q;
scanf("%d%d",&row,&col);
printf("\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
int k;
scanf("%d",&k);
a[i][j]=k;
b[i][j]=0;
if(k>max)
{
max=k;
p=i;
q=j;
}
}
}
bb(1,p,q);
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
if(b[i][j]==0)
bb(1,i,j);
}
}
printf("\n%d\n",m);
return 0;
}

void bb(int o,int x,int y)
{int i;
b[x][y]=1;
if(o>m)
{
m=o;
}

for(i=0;i<4;i++)

RE一般是由于数组访问越界或者递归有问题
这题你是用递归做的, 时间复杂度太大...必须用动态规划才行的通

碰巧我做过一道类似的题, 只不过那题中的数组是正方形的, 所以输入有些不同,
题目链接:http://acm.buaa.edu.cn/oj/problem_show.php?c=33&&p=1148

我的代码: c++编译运行通过
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

const int MAX = 103;
const int NUL = -1;
const int ERR = -2;
int a[MAX][MAX];
int stat[MAX][MAX];
int n;

bool check(int i, int j)
{
if (i<0 || j<0 || i>n-1 || j>n-1)
return false;
else
return true;
}

int f(int ii, int jj)
{
if (ii<0 || jj<0 || ii>n-1 || jj>n-1)
return ERR;

if (stat[ii][jj] != NUL)
return stat[ii][jj];

int i, j, k=0, round[10], max=0;

for (i=-1; i<2; i++)
{
for (j=-1; j<2; j++)