zoukankan      html  css  js  c++  java
  • HDU-1312-Black and Red

    这题其实和POJ的1979是同一道题,当时POJ使用cin写的,所以读入的时候,就很正确。
    这次用scanf读入的时候,就出现了问题,我们在读完宽高之后,要用getchar吸收掉回车,然后每行末尾的回车也要用scanf吸收掉。
    对于深搜函数的写法有多种,我在代码里面列了两种。

    #include <cstdio>
    #include <cstring>
    int map[25][25];
    int vis[25][25];
    int sr, sc, ans, H, W;
    int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    
    // void dfs(int r,int c)
    // {
    //     ans++;
    //     map[r][c] = 0;
    //     for (int k = 0;k<4;k++) {
    //         int i = r + d[k][0];
    //         int j = c + d[k][1];
    //         if (i>=0&&j>=0&&i<H&&j<W&&map[i][j]) {
    //             dfs(i, j);
    //         }
    //     }
    // }
    
    void dfs(int r,int c)
    {
        if (map[r][c])
            ans++;
        for (int i=0;i<4;i++) {
            int row = r + d[i][1];
            int col = c + d[i][0];
            if (row>=0&&col>=0&&row<H&&col<W&&map[row][col]&&!vis[row][col]) {
                vis[row][col] = 1;
                dfs(row, col);
            }
        }
    }
    
    int main()
    {
        char ch;
        while (scanf("%d%d",&W,&H)&&W+H) {
            getchar();
            memset(map, 0, sizeof(map));
            memset(vis, 0, sizeof(vis));
            for (int i = 0; i < H;i++) {
                for (int j = 0; j < W;j++) {
                    scanf("%c", &ch);
                    if (ch=='.')
                        map[i][j] = 1;
                    else if (ch=='@') {
                        sr = i;
                        sc = j;
                        map[i][j] = 1;
                    }
                }
                getchar();
            }
            // for (int i = 0; i < H;i++) {
            //     for (int j = 0; j < W;j++) {
            //         printf("%d", map[i][j]);
            //     }
            //     printf("
    ");
            // }
            ans = 0;
            vis[sr][sc] = 1;
            dfs(sr,sc);
            printf("%d
    ", ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Linux驱动入门(三)Led驱动
    Linux驱动入门(二)操作硬件
    mysql表的完整性约束
    数据库操作
    初识数据库
    mysql的安装、启动和基础配置 —— windows版本
    Socket网络编程
    python进阶之多线程(简单介绍协程)
    python进阶多进程(进程池,进程间通信)
    python基础之异常处理
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/10350129.html
Copyright © 2011-2022 走看看