题解 | #小红打怪#

小红打怪

https://ac.nowcoder.com/acm/problem/272294

暴力就是真理

#include <stdio.h>
#include <stdlib.h>

int CountNumMon(char **map, int n, int m);

int main() {
    int n, m;
    scanf("%d %d", &n, &m);

    char **map = NULL;
    map = (char **)malloc(n * sizeof(char *));
    for (int i = 0; i < n; i++) {
        map[i] = (char *)malloc(m * sizeof(char));
        for (int j = 0; j < i; j++) {
            free(map[j]);
        }
        free(map);
    }

    int i, j, count = 0; // 初始化count
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            scanf(" %c", &map[i][j]);
        }
    }
    
    count = CountNumMon(map, n, m);

    // 释放内存
    for (i = 0; i < n; i++) {
        free(map[i]);
    }
    free(map);

    printf("%d\n", count);
    return 0;
}

int CountNumMon(char **map, int n, int m) {
    int count = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (map[i][j] == 'W') {
                for (int k = i; k >= 0; k--) {
                    if (map[k][j] == '*') {
                        count++;
                    }
                }
            } else if (map[i][j] == 'S') {
                for (int k = i; k < n; k++) {
                    if (map[k][j] == '*') {
                        count++;
                    }
                }
            } else if (map[i][j] == 'A') {
                for (int k = j; k >= 0; k--) {
                    if (map[i][k] == '*') {
                        count++;
                    }
                }
            } else if (map[i][j] == 'D') {
                for (int k = j; k < m; k++) {
                    if (map[i][k] == '*') {
                        count++;
                    }
                }
            }
        }
    }
    return count;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务