• 洛谷 P1506 拯救oibh总部


    题目背景

    oibh总部突然被水淹没了!现在需要你的救援……

    题目描述

    oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进不去的……现在给出oibh的围墙建设图,问oibh总部没被淹到的重要区域(由"0"表示)有多少。

    输入输出格式

    输入格式:

     

    第一行是两个数,x和y(x,y<=500)

    第二行及以下是一个由*和0组成的x*y的图。

     

    输出格式:

     

    输出没被水淹没的oibh总部的“0”的数量。

     

    输入输出样例

    输入样例#1: 复制
    样例输入1
    4 5
    00000
    00*00
    0*0*0
    00*00
    
    样例输入2
    5 5
    *****
    *0*0*
    **0**
    *0*0*
    *****
    
    输出样例#1: 复制
    样例输出1
    1
    
    样例输出2
    5
    思路:搜索。
    #include<iostream>
    #include<cstdio>
    using namespace std;   
    char ch;   
    int x,y,ans;
    int map[550][550];
    int dx[5]={0,1,-1,0,0};
    int dy[5]={0,0,0,1,-1};
    void dfs(int m,int n)  { 
        if(m<0||n<0||m>x+1||n>y+1||map[m][n])  
            return;  
        map[m][n]=2;   
        for(int i=1;i<=4;i++)  
            dfs(m+dx[i],n+dy[i]);
    }  
    int main(){
        scanf("%d%d",&x,&y);
        for(int i=1;i<=x;i++)
            for(int j=1;j<=y;j++){
                cin>>ch;  
                if(ch=='0')  
                    map[i][j]=0; 
                else map[i][j]=1;
            }
        dfs(0,0);  
        for(int i=1;i<=x;i++)  
            for(int j=1;j<=y;j++)
                if(!map[i][j])
                    ans++;   
        printf("%d",ans);
        return 0;  
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    java嵌套循环练习
    java菜鸡循环练习
    Kruskal重构树
    狄利克雷卷积
    莫比乌斯反演
    两道趣题
    树状数组
    多重背包
    SPFA与差分约束
    快速线性筛
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7923078.html
Copyright © 2020-2023  润新知