求助
查看原帖
求助
230965
MalphaX楼主2021/7/27 14:46
#include <bits/stdc++.h>
using namespace std;
char c;
int tx,n,m,ty;
int a[1001][2];
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int mp[1001][1001];
int vis[1001][1001];
int b,d,i,j,p,lx,ly,ans=1<<30,k;
void dfs(int x,int y){
	if(x==n&&y==m&&k==0) {k=1;cout<<"1 1"<<"\n";for(i=1;i<=p;++i)if(mp[a[i][0]][a[i][1]]!='*'&&a[i][0]!=0&&a[i][1]!=0)cout<<a[i][0]<<" "<<a[i][1]<<"\n";}
	else if(x!=0&&y!=0) for(int i=0;i<4;++i){
	//	cout<<1;
		int nx=x+dir[i][0];
		int ny=y+dir[i][1];
		if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&mp[nx][ny]>0&&!vis[nx][ny]){
			vis[nx][ny]=1;
			p++;
			a[p][0]=nx;
			a[p][1]=ny; 
			//cout<<i;
		//	cout<<nx<<" "<<ny;
			dfs(nx,ny);
			a[p][0]=a[p][1]=0;
			--p;
			vis[nx][ny]=0;
			//cout<<1<<" ";
		}
	}
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>c;
            if(c!='*')mp[i][j]=1;
        }
		}

	dfs(1,1);
	//cout<<p;
	return 0;
}

这里是评测记录评测记录

2021/7/27 14:46
加载中...