题意:
正方形棋盘,国王从中心开始走,每次有五种选择,上、下、左、右、停止。求到达(a, b)至少要几步。
思路:
(-4, -3) (4, 3) (-4, 3) (4, -3) 这些点到(0,0)的距离是相同的
对称性的问题,可以通过以下方式来解决:(abs(x), abs(y)) 问题就到转化到第一象限了
代码:
void solve() {
int a, b;
std::cin >> a >> b;
a = std::abs(a);
b = std::abs(b);
if (a < b) {
std::swap(a, b);
}
//两次对称处理,四个象限归一和对角线处理
if(a == b){
cout<< a + b << '\n';
}
else{
cout<< 2*a-1 <<'\n';
}
return;
}