C++ 代码用于查找满足约束条件的点
假设我们有两个点 a = (x1, y1) 和 b = (x2, y2)。两个点之间的曼哈顿距离 dist(a, b) = |x1 - x2| + |y1 - y2|。如果点 a 的坐标是 (0, 0) 且点 b 的坐标是 (x, y),我们必须找到一个点 c,使得 dist(a, c) = dist(a, b)/ 2 且 dist(b, c) = dist(a, b)/2。如果找不到这样的点,则打印 -1, -1。
所以,如果输入为 x = 13,y = 7,那么输出将为 6, 4。
步骤
要解决此问题,我们将遵循以下步骤 -
if x mod 2 is same as 0 and y mod 2 is same as 0, then: print( x / 2, y / 2) otherwise when (x + y) mod 2 is same as 1, then: print(- 1, - 1) Otherwise, print(x / 2, (y + 1) / 2)
示例
让我们看看以下实现,以获得更好的理解 -
#include <bits/stdc++.h> using namespace std; #define N 100 void solve(int x, int y) { if(x % 2 == 0 && y % 2 == 0) cout<< x / 2 <<' '<< y / 2 <<endl; else if((x + y) % 2 == 1) cout<< -1 <<' '<< -1 <<endl; else cout<< x / 2 <<' '<< (y + 1) / 2 << endl; } int main() { int x = 13, y = 7 ; solve(x, y); return 0; }
输入
13, 7
输出
6 4
广告