zoukankan      html  css  js  c++  java
  • 洛谷P1605 迷宫 (DFS)

    题目背景

    迷宫 【问题描述】

    给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和

    终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫

    中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。

    输入样例 输出样例

    【数据规模】

    1≤N,M≤5

    题目描述

    输入输出格式

    输入格式:

    【输入】

    第一行N、M和T,N为行,M为列,T为障碍总数。第二行起点坐标SX,SY,终点

    坐标FX,FY。接下来T行,每行为障碍点的坐标。

    输出格式:

    【输出】

    给定起点坐标和终点坐标,问每个方格最多经过1次,从起点坐标到终点坐标的方

    案总数。

    输入输出样例

    输入样例#1: 复制
    2 2 1
    1 1 2 2
    1 2
    
    输出样例#1: 复制
    1

    计数方式:能到终点就加一 但是走过的地方需要标记一下
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cmath>
     4 using namespace std;
     5 char a[35][35];
     6 int n,m,t;
     7 int res=0;
     8 int dx[4]={1,-1,0,0};
     9 int dy[4]={0,0,1,-1};
    10 int sx,sy,ex,ey;
    11 void dfs(int x,int y)
    12 {
    13     if(x==ex-1&&y==ey-1) {
    14         res++;
    15         return;
    16     }
    17     for(int i=0;i<4;i++){
    18         int nx=x+dx[i],ny=y+dy[i];
    19         if(nx>=0&&nx<n&&ny>=0&&ny<m&&a[nx][ny]=='.'){
    20             a[x][y]='#';
    21             dfs(nx,ny);
    22             a[x][y]='.';
    23         }
    24     }
    25     return ;
    26 }
    27 int main()
    28 {
    29     while(cin>>m>>n>>t){
    30         for(int i=0;i<n;i++){
    31             for(int j=0;j<m;j++){
    32                 a[i][j]='.';
    33             }
    34         } 
    35         cin>>sx>>sy>>ex>>ey;
    36         while(t--){
    37             int x,y;
    38             cin>>x>>y;
    39             a[x-1][y-1]='#';
    40         }
    41         a[sx-1][sy-1]='#';
    42         dfs(sx-1,sy-1);
    43         cout<<res<<endl;
    44     } 
    45     return 0;
    46 }
  • 相关阅读:
    bzoj 1176 cdq分治套树状数组
    Codeforces 669E cdq分治
    Codeforces 1101D 点分治
    Codeforces 1100E 拓扑排序
    Codeforces 1188D Make Equal DP
    Codeforces 1188A 构造
    Codeforces 1188B 式子转化
    Codeforces 1188C DP 鸽巢原理
    Codeforces 1179D 树形DP 斜率优化
    git commit -m "XX"报错 pre -commit hook failed (add --no-verify to bypass)问题
  • 原文地址:https://www.cnblogs.com/wydxry/p/10561180.html
Copyright © 2011-2022 走看看