60分求助
  • 板块P1238 走迷宫
  • 楼主Lytnsmh
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/6/23 20:18
  • 上次更新2023/10/27 22:44:42
查看原帖
60分求助
537146
Lytnsmh楼主2022/6/23 20:18
#include<sstream>
#include<bits/stdc++.h>
#define ll long long
#define FC for(i=1;i<=n;i++)
#define FL for(j=1;j<=n;j++)
using namespace std;
ll a[4][2]={{0,-1},{-1,0},{0,1},{1,0}};
int n,m,ye,xe,ys,xs,maxn,b[20][20],qi,qo,pi,po;
bool f[20][20];
string s;
string NumberToString(int i)
{
    stringstream ss;
    ss << i;
    return ss.str();
}
void dfs(ll x,ll y,string step,ll ans)
{
    int xx,yy;
    if(x==pi&&y==po)
     {
     	 maxn+=1;
        	s="";
        	s=step;
	 cout<<"(1,1)->";
     for(int i=0;i<s.size()-2;i++)
      {
      	cout<<s[i];
	  }
	  cout<<endl;
        return ;
     }
     for(int i=0;i<4;i++)
      {
        xx=x+a[i][0];
        yy=y+a[i][1];
          if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&b[xx][yy]==1&&f[xx][yy]==0)
           {
            f[xx][yy]=1;
            string se=NumberToString(xx);
            string sr=NumberToString(yy);
            dfs(xx,yy,step+'('+se+','+sr+")->",ans+1);
            f[xx][yy]=0;
           } 
      }
}
int main()
{
	s="";
    cin>>n>>m;
    for(int i=1;i<=n;i++)
     {
        for(int j=1;j<=m;j++)
         {
         	char c;
         	cin>>c;
            b[i][j]=c-48;
         }
     }
     cin>>qi>>qo>>pi>>po;
     f[qi][qo]=0;
     dfs(qi,qo,"",0);
     if(maxn==0)
     cout<<-1;
    return 0;
}
2022/6/23 20:18
加载中...