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 }
  • 相关阅读:
    Android数据存储之File
    Openfiler使用说明
    nginx的upstream目前支持5种方式的分配
    centOS 6.5关闭防火墙步骤
    yum下载文件的存放位置
    ubuntu如何开启root,如何启用Ubuntu中root帐号
    ubuntu下的apt-get内网本地源的搭建
    [转]StarWind模拟iSCSI设备
    ORACLE删除某用户下所有对象
    [转]oracle导入提示“IMP-00010:不是有效的导出文件,头部验证失败”的解决方案
  • 原文地址:https://www.cnblogs.com/wydxry/p/10561180.html
Copyright © 2011-2022 走看看