• 2806 红与黑


    2806 红与黑

    链接:http://codevs.cn/problem/2806/

     时间限制: 1 s
     空间限制: 64000 KB
     
     
     
     
    题目描述 Description

    有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数。

    输入描述 Input Description

    输入包含多个数据集。一个数据集开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20.
    每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示:
    '.'——黑砖
    '#'——红砖
    '@'——男子(每个数据集仅出现一次)
    两个0表示输入结束。

    输出描述 Output Description

    对每个数据集,程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数。

    样例输入 Sample Input

    6 9
    ....#.
    .....#
    ......
    ......
    ......
    ......
    ......
    #@...#
    .#..#.
    11 9
    .#.........
    .#.#######.
    .#.#.....#.
    .#.#.###.#.
    .#.#..@#.#.
    .#.#####.#.
    .#.......#.
    .#########.
    ...........
    11 6
    ..#..#..#..
    ..#..#..#..
    ..#..#..###
    ..#..#..#@.
    ..#..#..#..
    ..#..#..#..
    7 7
    ..#.#..
    ..#.#..
    ###.###
    ...@...
    ###.###
    ..#.#..
    ..#.#..
    0 0

    样例输出 Sample Output

    45
    59
    6
    13

    数据范围及提示 Data Size & Hint

     题解:f[i][j]记录可以走的黑砖,(i,j)处的瓷砖数就是到它四周经过的瓷砖数加上1(本身),注意用数组储存状态

    #include<bits/stdc++.h>
    using namespace std;
    int f[25][25];
    char a[25][25];
    int w,h;
    int F(int i,int j){
        if(a[i][j]=='#')return f[i][j]=0;
        if(f[i][j])return 0;
        if(i<1||i>h)return f[i][j]=0;
        if(j>w||j<1)return f[i][j]=0;
        f[i][j]++;
    
        return f[i][j]+=F(i-1,j)+F(i+1,j)+F(i,j+1)+F(i,j-1);
        
    }
    int main(){
        
        while(cin>>w>>h){
            if(!w&&!h)break;
            for(int i=1;i<=25;i++)
            for(int j=1;j<=25;j++)f[i][j]=0;
            int x,y;
            for(int i=1;i<=h;i++)
            for(int j=1;j<=w;j++){
                cin>>a[i][j];
                if(a[i][j]=='@'){
                    x=i;y=j;
                }
            }
            
            cout<<F(x,y)<<endl;
            
        }
    } 
  • 相关阅读:
    Oracle X$ View:X$KJMSDP
    explore my oracle support using firefox 3.6
    EnterpriseDB Migration 迁移工具使用测试(2)
    What's preconnect.svc in 11g RAC?
    Mysql:语法:注释
    Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:总揽
    Mysql:简单“破解”SQLyog Enterprise 812 Trial
    Mysql:函数之一:information functions
    Mysql:语法:虚拟表DUAL
    VC++.Net2005的一些常识(转)
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7447578.html
Copyright © 2020-2023  润新知