题目描述
小杨有一个 n × m 的矩阵,仅包含 0, 1, ?。现需根据特定规则对矩阵进行移动操作,例如将非零元素向右移动或更新未知状态。本题旨在考察二维数组的操作及边界处理。
解题思路
- 输入处理:读取矩阵的行数 n 和列数 m,以及矩阵的具体内容。
- 逻辑判断:遍历矩阵中的每个元素,根据题目给定的移动规则(如右移、下移或状态填充)进行处理。
- 边界检查:注意数组越界情况,确保索引在合法范围内。
- 输出结果:将处理后的矩阵按格式输出。
代码实现
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
if (!(cin >> n >> m)) return 0;
vector<vector<char>> matrix(n, vector<char>(m));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> matrix[i][j];
}
}
// 示例逻辑:将所有 '1' 向右移动一格,遇到边界则循环或停止
// 此处为通用矩阵移动框架,具体规则依题目而定
vector<vector<char>> result = matrix;
for (int i = 0; i < n; ++i) {
for ( j = ; j < m; ++j) {
(matrix[i][j] == ) {
(j + < m) {
result[i][j + ] = ;
}
}
}
}
( i = ; i < n; ++i) {
( j = ; j < m; ++j) {
cout << result[i][j];
}
cout << endl;
}
;
}


