zoukankan      html  css  js  c++  java
  • C++ 瓷砖

    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int n,m,dx[100],dy[100],q[400][2501];
    int front =1,rear=1;
    bool a[10000][1000];
    char c;
    int j,i,sum=0,ans=0,s,x,y,k;
    int main()
    {
        cin>>n>>m;
        for(i=1;i<m+1;i++)
        {
            for(j=1;j<n+1;j++)
          {
            cin>>c;
            if(c=='.')a[i][j]=true;
            else if(c=='@')
            {   
                x=i;y=j;
                a[i][j]=false;
            }
          }
          scanf("*");
        }
         
        dx[1]=1;dx[2]=-1;dx[3]=0;dx[4]=0;
        dy[1]=0;dy[2]=0;dy[3]=1;dy[4]=-1;
        q[1][1]=x;q[2][1]=y;
        front =1,rear=1;
        while(front<=rear)
        {
            for(int i=1;i<=4;i++)
            {
                x=q[1][front]+dx[i];
                y=q[2][front]+dy[i];
                if(a[x][y]){
                    rear++;
                    q[1][rear]=x;
                    q[2][rear]=y;
                    a[x][y]=false;
                }
            }
            front++;
        }
        printf("%d
    ",rear);
        return 0;
    先放一个宽度优先搜索的代码!


    试题描述:
    在一个W*h的矩形广场上,每一块1*1的地面都铺设了红色或黑色瓷砖。小林同学站在某一块黑色瓷砖上,他可以从此处出发,移动到上下左右四个相邻的且是黑色的瓷砖上。现在他想知道,通过重复上述移动所能经过的黑色瓷砖数。

    输入:
    第一行为h、w,2<=w、h<=50,之间有一个空格隔开。
    以下为一个w行h列的二维字符矩阵,每个字符为“.”“#”“@”分别表示该位置为黑色瓷砖、红色瓷砖、小林初始位置。

    输出:
    输出一行一个整数,表示小林从出发位置可以经过的黑色瓷砖数量。

    输入实例:
    11 9
    .#.........
    .#.#######.
    .#.#.....#.
    .#.#.###.#.
    .#.#..@#.#.
    .#.#####.#.
    .#.......#.
    .#########.
    ...........
    输出实例:
    59

    本题是一道“联通块问题”;
    代码也是很容易理解的,用一个宽度优先搜索,从上下左右四个方向进行对黑色瓷砖的判断,同时用一个bool类型的数组记录,使其不走重复的路;
    不要忘记用二维数组!!!
  • 相关阅读:
    ZINTERSTORE — Redis 命令参考
    Wombat vim colorscheme – customized Chronosbox
    我的vim colorscheme 白色之夜 博客园
    Python list of class attributes Python
    vim配色方案colorscheme设置
    colorscheme install
    Python类中的私有成员(私有函数,私有变量)
    Pebble Overview
    用python 发送邮件
    Python发送带附件的Email
  • 原文地址:https://www.cnblogs.com/FXY-180/p/9369890.html
Copyright © 2011-2022 走看看