那里错了,70分

P1434 [SHOI2002] 滑雪

火星大王 @ 2016-10-04 19:45:15

#include<iostream>
#include<cstdio>
using namespace std;
int r=0,c=0,data[110][110]={0},q[110][110]={0};
int step=0,t=0,ans=0; 
const int fangwei[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int dfs(int x,int y)
{
    if(q[x][y])return q[x][y];step=0;//剪枝 
    for(int i=0;i<4;i++)//4方向搜索 
    {
        int x1,y1;
        x1=x+fangwei[i][0];
        y1=y+fangwei[i][1];
        if(data[x1][y1]<data[x][y]&&x1>=0&&x1<c&&y1>=0&&y1<r)
        {
            t=dfs(x1,y1);
            if(t>step)step=t;
        }
    }
    q[x][y]=step+1;  
    return q[x][y];  
}
int main()
{
    freopen("B.in","r",stdin);
    scanf("%d%d",&r,&c);
    for(int a=0;a<r;a++)
    {
        for(int b=0;b<c;b++)
        {
            scanf("%d",&data[a][b]);
        }
    }
    for(int a=0;a<=r;a++)
    {
        for(int b=0;b<=c;b++)
        {
            int aaa=dfs(a,b); 
            if(aaa>ans)ans=aaa; 
        }
    }
    cout<<ans<<endl;
}

by du33169 @ 2017-02-09 19:01:49

if(data[x1][y1]<data[x][y]&&x1>=0&&x1<c&&y1>=0&&y1<r)

这里x1应该小于r,y1小于c吧

freopen记得去掉


by SofanHe @ 2017-05-25 23:02:41

你的XY反了。。。。。


by n0000000000o @ 2018-05-30 12:01:50

,,,我也写错了,,
谢谢,有帮助


|