为什么样例输出了0
  • 板块P1605 迷宫
  • 楼主zhou_qian_le
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/3/26 23:02
  • 上次更新2023/11/5 01:34:16
查看原帖
为什么样例输出了0
479628
zhou_qian_le楼主2021/3/26 23:02

就是一个看起来没有问题的dfs,枚举方向,为什么过不了示例呢

#include <bits/stdc++.h>
//#include "zc2008.h"
//#include "readport.h"
using namespace std;

int mymap[6][6];
int tmp[6][6];
int n, m, t;        //N为行,M为列,T为障碍总数
int sx, sy, fx, fy; //起点坐标SX, SY,终点坐标FX, FY
int tx, ty;
int ans;
int px[4] = {-1, 0, 0, +1};
int py[4] = {0, -1, +1, 0};

int dfs(int in_x, int in_y);

int main()
{
    cin >> n >> m >> t;
    cin >> sx >> sy >> fx >> fy;
    for (int i = 0; i < t; i++)
    {
        cin >> tx >> ty;
        tmp[tx][ty] = 1;
    }
    mymap[sx][sy] = 1;
    dfs(sx, sy);
    cout << ans << endl;
    return 0;
}

int dfs(int in_x, int in_y)
{
    if (in_x == fx && in_y == fy)
    {
        ans++;
        return 0;
    }

    /*if (in_x>=0&&in_y>=0)
    {
        mymap[in_x-1][in_y] = -1;
        dfs(in_x - 1, in_y);
        mymap[in_x-1][in_y] = 0;

        mymap[in_x+1][in_y] = -1;
        dfs(in_x + 1, in_y);
        mymap[in_x+1][in_y] = 0;

        mymap[in_x][in_y-1] = -1;
        dfs(in_x, in_y - 1);
        mymap[in_x][in_y-1] = 0;

        mymap[in_x][in_y+1] = -1;
        dfs(in_x, in_y + 1);
        mymap[in_x][in_y+1] = 0;
    }*/
    for (int i = 0; i < 3;i++){
        if (mymap[in_x + px[i]][in_y + py[i]] == 0 && tmp[in_x + px[i]][in_y + py[i]] == 0)
        {
            mymap[in_x + px[i]][in_y + py[i]] = 1;
            dfs(in_x + px[i], in_y + py[i]);
            mymap[in_x + px[i]][in_y + py[i]] = 0;
        }
    }
        return 0;
}
2021/3/26 23:02
加载中...