1 条题解
-
0
📝 题目大意
给定两个 的字符矩阵 和 (均为小写字母),保证恰好只有一个位置 上的字符不同,找出该位置并输出其行号和列号。
💡 解题思路
- 题目分析:,数据范围很小,且题目保证恰好存在一个不同位置,无需考虑找不到或存在多个的情况。
- 算法推导:
- 读入 ,然后分别读入矩阵 和 的每一行(用
vector<string>存储)。 - 双重循环遍历所有 (),比较 与 。
- 一旦发现不同,立即输出 和 (题目下标从 开始),然后
return 0退出即可。
- 读入 ,然后分别读入矩阵 和 的每一行(用
- 边界与细节:
- 唯一可能踩坑的是下标:代码中循环从 开始,输出时需 。
- 由于题目保证恰好有一个不同位置,找到后直接输出并退出即可,无需继续遍历。
⏱️ 复杂度分析
- 时间复杂度:,最坏情况下需要遍历整个矩阵。
- 空间复杂度:,存储两个 的字符串矩阵。
💻 标准代码 (C++)
#include <iostream> #include <vector> #include <string> using namespace std; int main() { int N; cin >> N; vector<string> A(N), B(N); // 存储两个 N×N 矩阵 // 读入矩阵 A for (int i = 0; i < N; i++) { cin >> A[i]; } // 读入矩阵 B for (int i = 0; i < N; i++) { cin >> B[i]; } // 逐格比较,找到第一个不同位置 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (A[i][j] != B[i][j]) { // 题目下标从 1 开始,所以 +1 输出 cout << i + 1 << " " << j + 1 << endl; return 0; // 找到后直接退出 } } } return 0; }
- 1
信息
- ID
- 791
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者