समस्या कथन
कार्तीय तल में हमें N अंक दिए गए हैं। हमारा कार्य किसी भी अक्ष के एक तरफ शेष अंक प्राप्त करने के लिए हटाए जाने वाले अंकों की न्यूनतम संख्या ज्ञात करना है।
यदि दिया गया इनपुट {(10, 5), (-2, -5), (13, 8), (-14, 7)} है तो यदि हम (-2, -5) हटा दें तो शेष सभी बिंदु X से ऊपर हैं। -अक्ष।
अतः उत्तर 1 है।
एल्गोरिदम
1. Finds the number of points on all sides of the X-axis and Y-axis 2. Return minimum from both of them
उदाहरण
#include <iostream> #include <algorithm> #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; struct point{ int x, y; }; int minPointsToBeRemoved(point arr[], int n){ int a = 0, b = 0, c = 0, d = 0; for (int i = 0; i < n; i++){ if (arr[i].x >= 0) b++; else if (arr[i].x <= 0) a++; if (arr[i].y <= 0) d++; else if (arr[i].y >= 0) c++; } return min({a, d, c, b}); } int main(){ point arr[] = {{10, 5}, {-2, -5}, {13, 8}, {-14, 7}}; cout << "Minimum points to be removed = " << minPointsToBeRemoved(arr, SIZE(arr)) << endl; return 0; }
आउटपुट
जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्न आउटपुट उत्पन्न करता है -
Minimum points to be removed = 1