今日学习笔记:绝对值函数
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;
}

京公网安备 11010502036488号