今日学习笔记:绝对值函数
1.学到了一个绝对值函数,简化了计算逻辑,使用abs(rows - 2) + abs(cols - 2)直接计算需要移动的总次数
2.原代码中每次只移动一步的逻辑是错误的,正确的做法是计算水平和垂直方向需要移动的总步数之和
(我原来的思路是:if (rows>3) { cnt++; rows--; } 
 if (rows<3) { cnt++; rows++; }
 if (cols>3) { cnt++; cols--; }
 if (cols<3 { cnt++; cols++; }
不过我还是有点不明白为什么代码执行起来总是少了个1,有懂的牛友欢迎来指正)
#include<stdio.h>
#include<math.h>// 需要使用绝对值函数abs
int main()
{
    int rows,cols,i,j;
    rows=-1;
    cols=-1;
    int arr[5][5];
    int cnt=0;
    //输入二维数组的数字
    for (i=0;i<5;i++) {
        for (j=0;j<5;j++) {
            scanf("%d",&arr[i][j]);
        }
    }
//找到1的位置
    for (i=0;i<5;i++) {
        for (j=0;j<5;j++) {
            if (arr[i][j]==1) {
                rows=i;
                cols=j;
            }    
        }
    }
    cnt=abs(rows-2)+abs(cols-2);
    printf("%d\n",cnt);
    return 0;
}