1 条题解

  • 0
    @ 2024-3-14 23:21:07
    #include <bits/stdc++.h>
    using namespace std;
    int n,m,c;
    bool f[15][15],flag;
    char a[15][15];
    int fx[5]={0,0,1,0,-1};
    int fy[5]={0,1,0,-1,0};
    struct Node{
    	int xe,ye;
    }r[150];
    void print(int key){
    	c++;
    	cout<<c<<":";
    	for (int i=1;i<key;i++)cout<<r[i].xe<<","<<r[i].ye<<"->";
    	cout<<n<<","<<m<<endl;
    }
    void dfs(int x,int y,int k){
    	r[k]={x,y};
    	if (x==n&&y==m){
    		print(k);flag=true;
    		return;
    	}
    	for (int i=1;i<=4;i++){
    		int tx=fx[i]+x;
    		int ty=fy[i]+y;
    		if (tx>=1&&tx<=n&&ty>=1&&ty<=m&&!f[tx][ty]&&a[tx][ty]=='o'){
    			f[tx][ty]=true;
    			dfs(tx,ty,k+1);
    			f[tx][ty]=false;
    		}
    	}
    }
    int main(){
    	cin>>n>>m;
    	for (int i=1;i<=n;i++){
    		for (int j=1;j<=m;j++)cin>>a[i][j];
    	}
    	f[1][1]=true;
    	dfs(1,1,1);
        if (!flag)cout<<"no";
    	return 0;
    }
    
    • 1

    信息

    ID
    408
    时间
    1000ms
    内存
    64MiB
    难度
    5
    标签
    递交数
    32
    已通过
    16
    上传者