Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด 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 == 0 และ y mod 2 == 0:
    print(x / 2, y / 2)
else if (x + y) mod 2 == 1:
    print(-1, -1)
otherwise:
    print(x / 2, (y + 1) / 2)

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

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