求助大佬,樣例不過
  • 板块P1238 走迷宫
  • 楼主Tony_rao
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/8/24 15:03
  • 上次更新2023/10/27 13:52:48
查看原帖
求助大佬,樣例不過
557408
Tony_rao楼主2022/8/24 15:03
#include<bits/stdc++.h>
using namespace std;

int Map[20][20],check[20][20];
int n,m;
int x,y;
int xx ,yy;
int cnt = 1;
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};
int ansx[1000],ansy[1000];

void print(){
    for(int i=1;i<=cnt;i++)
        cout << "(" << ansx[i] << "," << ansy[i] << ")" << "->";
    cout << endl;
}


void dfs(int x,int y){
    if(x > n || y > m || x <= 0 || y <= 0)return ;
    if(x == xx && y == yy)print();
    for(int i=0;i<4;i++){
        if(check[x+dx[i]][y+dy[i]]==1&&x+dx[i]>0&&y+dy[i]>0&&x+dx[i]<=n&&y+dy[i]<=m){
            check[x+dx[i]][y+dy[i]]=0;
            ansx[cnt] = x,ansx[cnt+1] = x+dx[i];
            ansy[cnt] = y,ansy[cnt+1] = y+dy[i];
            cnt++;
            dfs(x+dx[i],y+dy[i]);
            cnt--;
            check[x+dx[i]][y+dy[i]]=1;
        }
    }
}

int main(){
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            cin>>Map[i][j];
            if(Map[i][j] == 1)check[i][j] = 1;
            if(Map[i][j] == 0)check[i][j] = -1;
        }
        cin >> x >> y >> xx >> yy ;
    dfs(x,y);
    return 0;
}
2022/8/24 15:03
加载中...