优化后的代码
这个题我的代码有个边界问题 需要优化一下
要是蓝桥杯有这个题 我就凉了
#include <iostream>
using namespace std;
int a[2][2];
int main()
{
int w , m , n;
scanf("%d %d %d" , &w , &m , &n);
int mx = m / w , my = m % w , nx = n / w , ny = n % w;
if(mx & 1) my = (w - my + 1) % w;//我原本是 my = w - my + 1 有个边界问题
if(nx & 1) ny = (w - ny + 1) % w;//当 my = 0 的时候 这个就会出现 my 比 w 还大 所以要模 w
cout << abs(ny - my) + abs(nx - mx);
// cout << mx << endl << my << endl << nx << endl << ny << endl;
}
y总代码
下标从 0 开始就不会有这个问题 y总 yyds
例如 w = 6
如果从0开始 那么 就会是这样
0 1 2 3 4 5
11 10 9 8 7 6
每次取模的时候都不会有问题!!!
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int w, m, n;
cin >> w >> m >> n;
m --, n -- ;
int x1 = m / w, x2 = n / w;
int y1 = m % w, y2 = n % w;
if (x1 % 2) y1 = w - 1 - y1;
if (x2 % 2) y2 = w - 1 - y2;
cout << abs(x1 - x2) + abs(y1 - y2) << endl;
return 0;
}