1 条题解
-
0
📝 题目大意
给定一个 的字符网格,每个格子为
#(有棋子)或.(空)。统计所有格子中#的数量。💡 解题思路
- 题目分析:,数据规模极小,直接暴力遍历即可。字符仅包含
#和.,只需统计#出现次数。 - 算法推导:
- 读入 和 ;
- 使用
map<char, int>(变量mp)记录每个字符的出现次数; - 遍历 行,每行读入字符串 ,再遍历每个字符
s[j],令mp[s[j]]++; - 最终输出
mp['#'],即#的出现总次数。
- 边界与细节:
- 当没有
#时,mp['#']默认值为 (map的未访问键值自动初始化为 ),输出 正确。 - 最小为 ,不存在空输入情况。
- 当没有
⏱️ 复杂度分析
- 时间复杂度:,其中 (字符集仅含
#和.),实际上 可视为常数。由于 ,遍历量极小。 - 空间复杂度:,
map仅存储两个键值对。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main(){ map<char,int> mp; // 统计每个字符出现的次数 int w, h; string s; cin >> h >> w; // 读入行数 H 和列数 W for (int i = 0; i < h; i++) { cin >> s; // 读入第 i 行 for (int j = 0; j < w; j++) { mp[s[j]]++; // 统计当前字符 } } cout << mp['#']; // 输出 '#' 的数量 } - 题目分析:,数据规模极小,直接暴力遍历即可。字符仅包含
- 1
信息
- ID
- 657
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者