คำชี้แจงปัญหา
เราได้รับคะแนน 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