7 条题解

  • 0
    @ 2024-4-18 18:56:56
    #include<cstdio>
    #include<iostream>
    using namespace std;
    
    int posit[16][16];
    int flag[16][16];
    int end1,end2;
    int dy[4]={0,-1,0,1};
    int dx[4]={-1,0,1,0};
    int n,m; 
    int count=0; 
    
    string dfs(int y,int x,string s){
    	char tmp[12];
    	if(y!=end1||x!=end2) {
    		sprintf(tmp,"(%d,%d)->",y,x);
    		s+=tmp;
    	}
    	else{
    		sprintf(tmp,"(%d,%d)",y,x);
    		cout<<s<<tmp<<endl;
    		count++;
    		return "";
    	}
    	
    	int newy,newx;	
    	
    	for(int i=0;i<4;++i){
    		newy=y+dy[i];
    		newx=x+dx[i];
    		if(newy>=1&&newy<=n&&newx>=1&&newx<=m&&posit[newy][newx]!=0&&flag[y][x]!=1){
    			flag[y][x]=1;
    			dfs(newy,newx,s); 
    			flag[y][x]=0;
    		}			
    	}
    	
    	return s;
    };
    
    int main(){
    	cin>>n>>m;
    	int be1,be2;
    	for(int i=1;i<=n;++i)						
    	for(int j=1;j<=m;++j) cin>>posit[i][j];	
    	
    	cin>>be1>>be2>>end1>>end2;
    	dfs(be1,be2,"");
    	if(count==0) cout<<-1;
    	return 0;
    	
    }
    

    信息

    ID
    84
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    776
    已通过
    118
    上传者