1 条题解
-
0
📝 题目大意
在一个 的棋盘上,列用字母
a~h(从左到右)编号,行用数字1~8(从下到上)编号。给定 行字符串(从上到下),其中恰好有一个*表示棋子,其余为.。输出棋子所在格子的棋盘坐标。💡 解题思路
- 题目分析:棋盘大小固定为 ,且恰好只有一个
*,只需找到它并转换为棋盘坐标。数据范围极小,直接遍历即可。 - 算法推导:
- 读入的 是从上到下的行,而棋盘行号是从下到上递增的。
- 设读入的行索引为 ( 表示最上面一行),列索引为 ( 表示最左边一列)。
- 列号转换:第 列对应字母
'a' + j(a,h)。 - 行号转换:棋盘最下面一行为第 行,对应读入的 ;最上面一行为第 行,对应 。因此行号 。
- 遍历所有格子,找到
*后输出char('a' + j)和8 - i,直接结束。
- 边界与细节:无特殊边界情况。注意输出格式为字母在前、数字在后,中间无空格。
⏱️ 复杂度分析
- 时间复杂度:,棋盘大小固定为 个格子。
- 空间复杂度:,仅存储 个长度为 的字符串。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main() { vector<string> s(8); // 读入 8 行,s[0] 为最上面一行,s[7] 为最下面一行 for (int i = 0; i < 8; i++) { cin >> s[i]; } for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (s[i][j] == '*') { // 列号:左起第 j 列对应字母 'a' + j // 行号:棋盘从下到上编号,输入从上到下,所以行号 = 8 - i cout << char('a' + j) << 8 - i << '\n'; return 0; } } } } - 题目分析:棋盘大小固定为 ,且恰好只有一个
- 1
信息
- ID
- 698
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者