top1编程
← 返回题目
题解

【入门】迷宫的路径数量

1 条题解

  • 0
    @ 2026-7-28 23:26:26
    #include<bits/stdc++.h>
    using namespace std;
    int f1[10][10],a[20][20],n,s;
    int fx[10]={0,-1,0,1,1,1,0,-1,-1};
    int fy[10]={0,1,1,1,0,-1,-1,-1,0};
    void f(int x,int y){
    	f1[x][y]=1;//表示走过
    	for(int i=1;i<=8;i++){//
    		int tx=x+fx[i];
    		int ty=y+fy[i];
    		if(tx>=1&&tx<=n&&ty>=1&&ty<=n&&a[tx][ty]==0&&f1[tx][ty]==0){
    			if(tx==1&&ty==n){//到终点右上角
    				s++;//路径数量+1
    			}else{
    				f(tx,ty);//继续找
    			}
    			f1[tx][ty]=0;//回溯
    		}
    	}
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cin>>a[i][j];//读入迷宫状态
    		}
    	}
    	f(1,1);
    	cout<<s;
    	return 0;
    }
    
    • 1