求助!滑雪WA30

以下是代码

#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int f[N][N], tu[N][N];
int n, m, xx, yy, r, c, high=INT_MIN;
int fx[4] = {0, 0, 1, -1};
int fy[4] = {1, -1, 0, 0};
int dfs(int x, int y)
{
    if (f[x][y] > 0)
        return f[x][y];
    int xx, yy;
    for (int i = 0; i < 4; i++)
    {
        xx = x + fx[i];
        yy = y + fy[i];
        if (xx >= 1 && yy >= 1 && xx <= n && yy <= m )
        {
            if (tu[xx][yy] < tu[x][y])
            {
                f[x][y] = max(f[x][y], dfs(xx, yy));
            }
        }
    }
    return ++f[x][y];
}
int main()
{
    cin >> r >> c;
    for (int i = 1; i <= r; i++)
    {
        for (int j = 1; j <= c; j++)
        {
            cin >> f[i][j];
        }
    }
    for (int i = 1; i <= r; i++)
    {
        for (int j = 1; j <= c; j++)
        {
            high=max(dfs(i,j),high);
        }
    }
    
    cout << high << endl;
    return 0;
}
2 个赞

你n和m,r和c是不是搞错了

1 个赞

是cin>>tu[i][j];

2 个赞

然后…样例直接变成了0

2 个赞

&& xx <= r && yy <= c )

2 个赞

vis没初始化

1 个赞

return f[x][y]下面一行插一句f[x][y]=1,下面的return不用++

1 个赞

然后是 赖俊豪 , ༺༺■̵̶̸̸̴̴̷̩͎̬͍̙͎͕͎̩͍͇̜͍̯̖͎̙͓̪͎͓̜̟͖͈̩͈̜̮̝̠̫̠͉̘̳̳̦͈͇̖͓̩͙̩̤͇̠̠̣͔͕̲͍̪̮̥̗̦͍͇͍͖̟͔͔̲̜̗̱̤̲̤̱̝̟͇̖͔̮͙̣͚̗̣̤̱͇͖̪͚͉̜̫̤̮͎̖̥͙̜̖̞̥͔͍̳͙̉̃̀͑͗͋̾̔̓̄̆̐̾͊̐̀̆̆̋̎̂̓̈̆̑͋͛̐̍̾̎͐̈́͋̌̾̓̌̂̿͗̂̂͗̊̇͛̾̋͂͒̉̿̾̽͛̈́̍̋͗̐͒͂̊̾͒̃̎̇͐̎̇́̅̈́͂̋̑͒́̓͆̅̓͌͗͋̏͒̽̒̉̂̔̒͆̊̐̀̈́̀͒̽̚̚ͅͅ҉向深水中的晨星_C++CodeIkun༻༻说的,你输入的是r和c,边界却是n和m,改下面上面都可以。
可以的话给个解决方案

3 个赞

回老帖,该罚!!!@林锦鸿 下次注意点!!!

2 个赞