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 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