题解 | #小红打怪#
小红打怪
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;
}