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

จำนวนคะแนนขั้นต่ำที่ต้องลบเพื่อให้ได้คะแนนที่เหลืออยู่ที่ด้านหนึ่งของแกนโดยใช้ C ++


คำชี้แจงปัญหา

เราได้รับคะแนน N ในระนาบคาร์ทีเซียน งานของเราคือการหาจำนวนจุดขั้นต่ำที่ควรลบออกเพื่อให้ได้คะแนนที่เหลืออยู่ที่ด้านใดด้านหนึ่งของแกนใด ๆ

หากอินพุตที่ได้รับคือ {(10, 5), (-2, -5), (13, 8) (-14, 7)} ดังนั้นหากเราลบ (-2, -5) คะแนนที่เหลือทั้งหมดจะอยู่เหนือ X -แกน

ดังนั้นคำตอบคือ 1.

อัลกอริทึม

<ก่อน>1. ค้นหาจำนวนจุดในทุกด้านของแกน X และแกน Y2 คืนขั้นต่ำจากทั้งคู่

ตัวอย่าง

#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) โดยใช้ namespace std;struct point{ int x, y;};int minPointsToBeRemoved( จุด arr[], int n){ int a =0, b =0, c =0, d =0; สำหรับ (int i =0; i =0) b++; อื่นถ้า (arr[i].x <=0) a++; ถ้า (arr[i].y <=0) d++; อื่นถ้า (arr[i].y>=0) c++; } return min({a, d, c, b});}int main(){ point arr[] ={{10, 5}, {-2, -5}, {13, 8}, {-14 , 7}}; cout <<"คะแนนขั้นต่ำที่จะลบ =" < 

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -

คะแนนขั้นต่ำที่จะลบ =1