zoukankan      html  css  js  c++  java
  • codeforces1214D Treasure Island

    其实是一道水题,很显然答案一定是0、1、2中的某一个数

    那么直接上dfs搜一遍,标记走过的点,如果这一次dfs不能到达终点,那么答案为0

    否则再dfs一遍,dfs时不走标记过的点,如果这一次不能到达终点,那么答案为1

    否则答案为2

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAXN 1000010
    using namespace std;
    int n,m;
    char map[MAXN];
    bool vis[MAXN];
    
    bool dfs(int r,int c)
    {
        if(r<0||r>=n||c<0||c>=m||map[r*m+c]=='#'||vis[r*m+c]) return 0;
        if(r==n-1&&c==m-1) return 1;
        if(r!=0||c!=0) vis[r*m+c]=1;
        return dfs(r+1,c)||dfs(r,c+1);
    }
    
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;i++) scanf("%s",map+i*m);
        if(!dfs(0,0)) {printf("0
    ");return 0;}
        if(!dfs(0,0)) {printf("1
    ");return 0;}
        printf("2
    ");
        return 0;
    }
  • 相关阅读:
    E
    D
    C
    B
    Python
    IDEA 设置资源目录
    光猫指示灯含义
    IO模型
    Linux 总目录
    Linux python 使用
  • 原文地址:https://www.cnblogs.com/BakaCirno/p/11465271.html
Copyright © 2011-2022 走看看