zoukankan      html  css  js  c++  java
  • Codeforces 919C

    传送门:http://codeforces.com/contest/919/problem/C

    给出一张n×m的座位表(有已占座位和空座位),请选择同一行(或列)内连续的k个座位。求选择的方法数。

    Hack:首先,若k=1,则所有的空座位均可选,方法数即为空座位数。

    对于某一行(或列)中连续的len个座位,选择的方法数为len-k+1。

    于是,分别逐行、逐列地统计,求出答案。参考程序如下:

    #include <stdio.h>
    #define MAX_N 2000
    
    char map[MAX_N][MAX_N];
    int row[MAX_N][MAX_N], col[MAX_N][MAX_N];
    
    int main(void)
    {
        int n, m, k;
        scanf("%d%d%d", &n, &m, &k);
        for (int i = 0; i < n; i++) {
            getchar();
            for (int j = 0; j < m; j++)
                map[i][j] = getchar();
        }
        int ans = 0;
        if (k == 1) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++)
                    if (map[i][j] == '.') ans++;
            }
            printf("%d
    ", ans);
            return 0;
        }
        //pass by row
        for (int i = 0; i < n; i++) {
            int len = 0, cnt = 0;
            for (int j = 0; j < m; j++) {
                if (map[i][j] == '*') {
                    if (len) row[i][cnt++] = len;
                    len = 0;
                }
                else len++;
            }
            if (len) row[i][cnt++] = len;
        }
        //pass by column
        for (int j = 0; j < m; j++) {
            int len = 0, cnt = 0;
            for (int i = 0; i < n; i++) {
                if (map[i][j] == '*') {
                    if (len) col[j][cnt++] = len;
                    len = 0;
                }
                else len++;
            }
            if (len) col[j][cnt++] = len;
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; row[i][j] != 0; j++)
                if (row[i][j] >= k) ans += row[i][j] - k + 1;
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; col[i][j] != 0; j++)
                if (col[i][j] >= k) ans += col[i][j] - k + 1;
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    PHP 单例 工厂模式 类的重载 抽象 接口
    上传文件
    ThinkPHP3.2中if标签
    JS闭包特性 运算符 DOM操作
    循环数组 连接数据库 AJAX
    ThinkPHP
    TP框架
    MVC框架
    类的自动加载,静态属性静态方法
    魔术方法__get()和set函数
  • 原文地址:https://www.cnblogs.com/siuginhung/p/8401575.html
Copyright © 2011-2022 走看看