求助排版不整齐P3848
  • 板块灌水区
  • 楼主WZKQWQ
  • 当前回复14
  • 已保存回复14
  • 发布时间2020/8/7 09:02
  • 上次更新2023/11/6 21:04:13
查看原帖
求助排版不整齐P3848
239433
WZKQWQ楼主2020/8/7 09:02

个人感觉这题最多绿

数据范围是真的水,才100,dfs很好过。

推荐这题当DFS板子题( 雾

如果你看了亿眼题,不难写出这玩意:

#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int n,sx,sy,mp[N][N],v[N][N],go[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
int dfs(int x,int y){
    v[x][y] = 1;
    int ans = 0;


    //核心部分省略一万字节.....


    v[x][y] = 0
    return ans;
}
int main(){
    scanf("%d%d%d",&n,&sx,&sy);
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= n;j++) scanf("%d",&mp[i][j]);
    printf("%d\n",dfs(sx,sy));
    return 0;
}

接下来就是填空了。

不碰到0或边界不停就是while了。

go数组永远滴神

for(int i = 0;i < 4;i++){
        int xx = x,yy = y,j = 0;
        while(1){
            j++;
            xx += go[i][0];
            yy += go[i][1];
            if(v[xx][yy] || xx <= 0 || yy <= 0 || xx > n || yy > n) break;
            if(mp[xx][yy]) continue;
            if(j == 1) break;
            ans = max(ans,dfs(xx,yy) + j);
            break;
        }
    }

细节一:

如果来到一个来过的点,break。

因为题目说:

细节二:

当你要跳的点相邻时,break。

因为题目说:

代码不用给了吧,完结撒花。

2020/8/7 09:02
加载中...