• 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;
    }
  • 相关阅读:
    2. 逻辑运算
    1. 条件
    6. 可变不可变类型
    5. 基本运算符
    4. 与用户交互
    12 .命名的EIGRP和EIGRP v6
    11. EIGRP路由SIA
    Redis 快速入门 -- Redis 快速入门(2)
    Redis 快速入门 -- Redis教程(1)
    Redis 百度百科
  • 原文地址:https://www.cnblogs.com/BakaCirno/p/11465271.html
Copyright © 2020-2023  润新知