这段代码的功能是:找到一个 5x5 矩阵中数字 1 的位置,然后计算将它移动到矩阵中心 (2,2) 所需的最少步数。

  1. 矩阵定义和输入

     int a[5][5];  // 创建5x5矩阵
     int x, y;     // 记录数字1的坐标
    
     for (i = 0; i < 5; i++) {        
         for (j = 0; j < 5; j++) {
             cin >> a[j][i];  // 注意:列在前,行在后
             if(a[j][i] == 1) {
                 x = j;  // 记录1所在的列
                 y = i;  // 记录1所在的行
             }
         }
     }
    
  2. 坐标系统 矩阵索引从 (0,0) 到 (4,4)

中心位置是 (2,2)

输入时是 a[j][i] 而不是 a[i][j],所以:

j 是列坐标(x坐标)

i 是行坐标(y坐标)

  1. 计算步数

     cout << abs(x - 2) + abs(y - 2);  // 曼哈顿距离
    

abs(x - 2):1所在列到中心列的步数

abs(y - 2):1所在行到中心行的步数

总和:从当前位置到中心的最少步数

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int a[5][5];
    int x, y;
    int j, i;
    for (i = 0; i < 5; i++)
    {        
        for (j = 0; j < 5; j++)
        {
            cin >> a[j][i];
            if(a[j][i] == 1)
            {
                x = j;//知道1的坐标
                y = i;
            }

        }

    }
    cout << abs(x - 2) + abs(y - 2);//绝对值
}