大佬救命,dfs30分,其他TLE
查看原帖
大佬救命,dfs30分,其他TLE
670533
spontenious楼主2023/6/3 15:48

下面是dfs代码块,要怎么优化才行啊,O2也过不了

void dfs(int r, int c, int fr, int fc) // 当前的row,column,父亲的row,column
{
    if (r < 1 || r > n || c < 1 || c > m)//如果数据不合法
        return;
    if (a[fr][fc] <= a[r][c])//如果高度不合法
        return;
    if (flag[r][c] == 1)//如果已经访问过了,剪枝
    {
        if (b[r][c].begin != 0 && b[r][c].end != 0)
            update(b[fr][fc], b[r][c]);//用当前的区间范围更新父亲的区间范围
        return;
    }
    dfs(r + 1, c, r, c); // 下
    dfs(r, c + 1, r, c); // 右
    dfs(r - 1, c, r, c); // 上
    dfs(r, c - 1, r, c); // 左
    if (b[r][c].begin != 0 && b[r][c].end != 0)
        update(b[fr][fc], b[r][c]);
    flag[r][c] = 1;//这个点现在已经访问完了
    return;
}
2023/6/3 15:48
加载中...