二维dp测试样例都过不了,求助!
查看原帖
二维dp测试样例都过不了,求助!
1278788
aojiaoluolisaiban楼主2024/3/13 20:53
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int ii, jj;
    cin >> ii >> jj;

    int a[105][105];
    int dp[105][105]; // 用于记录每个点的最长滑坡长度

    for (int i = 0; i < ii; i++) {
        for (int j = 0; j < jj; j++) {
            cin >> a[i][j];
            dp[i][j] = 1; // 初始化为1,因为每个点本身就构成长度为1的滑坡
        }
    }

    int fx[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 方向数组

    int maxLen = 1; // 记录最大滑坡长度

    for (int i = 0; i < ii; i++) {
        for (int j = 0; j < jj; j++) {
            for (int k = 0; k < 4; k++) {
                int x = i + fx[k][0];
                int y = j + fx[k][1];
                if (x >= 0 && x < ii && y >= 0 && y < jj && a[x][y] < a[i][j]) {
                    dp[i][j] = max(dp[i][j], dp[x][y] + 1); // 更新当前点的最长滑坡长度
                }
            }
            maxLen = max(maxLen, dp[i][j]); // 更新最大滑坡长度
        }
    }

    cout << maxLen << endl;

    return 0;
}

究竟是为什么捏??

2024/3/13 20:53
加载中...