5 条题解
-
0
using namespace std; int n_x[4]={0,-1,0,1}; int n_y[4]={-1,0,1,0};//上下左右四个方向的移动 int a[12][12];//a数组表示迷宫矩阵,0为能走,1为不能走 int n,t=0;//t用来统计到达终点的路径总数 void dfs(int x,int y){//站在x,y这个点,尝试向其他四个方向走 if(x==n&&y==n){//如果此刻已经站在终点 t++;//路经+1 return;//返回 } for(int i=0;i<4;i++){//四个方向选择 int nx=x+n_x[i]; int ny=y+n_y[i];//计算下一步的坐标 if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&a[nx][ny]==0){ //当下一个坐标在迷宫范围内,并且它能走 a[nx][ny]=1;//先标记改点状态为走过 dfs(nx,ny);//站下nx,ny这个点,继续尝试 a[nx][ny]=0;//走不通返回时,把这个点的状态改回来 } } } int main(){ cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; a[1][1]=1;//由于是从起点出发,那么起点状态一开始就要设置为1,防止走回头路 dfs(1,1); if(t>0) cout<<"YES"; else cout<<"NO"; return 0; }
信息
- ID
- 1310
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 116
- 已通过
- 41
- 上传者