查找NxM矩阵中-1最后出现位置的C++代码错误求解
代码问题排查及修正
核心错误梳理
- 匹配逻辑错误:代码中判断条件为
if (matrix[i][j] < 0),会把所有负数都识别为目标值记录,而题目要求仅匹配数值为*-1*的元素,这是返回错误答案的核心原因。 - 变量类型不合理:存储坐标的
x、y使用了double类型,整数坐标不需要浮点存储,还可能出现输出异常,直接改用int类型即可。 - 使用非标准语法:C++标准不支持
int matrix[row][col]这种动态长度的变长数组定义,属于C语言扩展特性,兼容性差。由于题目限制N、M最大为100,直接定义固定大小的二维数组即可。 - 冗余头文件:代码引入了
<climits>头文件但未使用,可以直接删除。
修正后的完整代码
#include <iostream> using namespace std; int main () { int row, col; int x = 0, y = 0; cin >> row >> col; int matrix[105][105]; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { cin >> matrix[i][j]; if (matrix[i][j] == -1) { x = i + 1; y = j + 1; } } } if (x == 0 && y == 0) { x = -1; y = -1; } cout << x << " " << y; return 0; }
内容的提问来源于stack exchange,提问作者Dddddd
相关产品推荐
相关产品推荐

