Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में -1 और +1 की सरणी में आकार K के उपसमुच्चय का योग 0 है या नहीं जांचें


इस समस्या में, हमें एक सरणी arr[] दी गई है जिसमें केवल 1 और -1 हैं और एक पूर्णांक मान k। हमारा कार्य जांचना है कि क्या -1 और +1 की सरणी में आकार K का कोई उपसमुच्चय है जिसका योग 0 है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: arr[] = {-1, 1, -1, -1, 1 , 1, -1}, k = 4

आउटपुट: YES

व्याख्या:

आकार 4 का उपसमुच्चय, {-1, 1, -1, 1}। योग = -1 + 1 - 1 + 1 = 0

समाधान दृष्टिकोण:

हमें जांचना है कि क्या आकार k का कोई उपसमुच्चय मौजूद है जिसका योग 0 के बराबर है। चूंकि उपसमुच्चय के रूप में हम सरणी से किसी भी तत्व पर विचार कर सकते हैं, योग 0 होगा यदि उपसमुच्चय में 1 और -1 की समान संख्या हो। यह केवल तभी संभव है जब उपसमुच्चय का आकार सम हो।

सरलता से,

यदि k सम है, तो true वापस करें।
यदि k विषम है, तो false वापस करें।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,

उदाहरण

#include <iostream>
using namespace std;

int countOne(int a[], int n) {
    int i, count = 0;
    for (i = 0; i < n; i++)
        if (a[i] == 1)
            count++;
    return count;
}

bool isSubSetSumZeroFound(int arr[], int n, int K) {
    int totalOne = countOne(arr, n);
    int totalNegOne = n - totalOne;
    return (K % 2 == 0 && totalOne >= K / 2 && totalNegOne >= K / 2);
}

int main() {
    int arr[] = { 1, 1, -1, -1, 1, -1, 1, 1, -1 };
    int size = sizeof(arr) / sizeof(arr[0]);
    int K = 4;
    if (isSubSetSumZeroFound(arr, size, K))
        cout<<"Subset of size "<<K<<" with sum of all elements 0 exists.";
    else
        cout<<"No subset found";
    return 0;
}

आउटपुट

Subset of size 4 with sum of all elements 0 exists.

  1. - C++ प्रोग्राम: दो संख्याएं ढूंढें जिनका योग और गुणनफल दोनों N के समान हों

    इस ट्यूटोरियल में, हम एक प्रोग्राम पर चर्चा करेंगे जो दो संख्याएं (मान लीजिए a और b) ढूंढता है जैसे कि दोनों a + b = N और a * b = N संतुष्ट हों। a को दोनों समीकरणों से हटाने पर, हमें b और N में एक द्विघात समीकरण मिलता है यानी b² - bN + N = 0 इस समीकरण के दो मूल होंगे जो हमें a और b दोनों का मान दें

  1. - C++ में दिए गए GCD और LCM के साथ कोई भी पेयर खोजें

    इस सेक्शन में हम देखेंगे कि दिए गए GCD और LCM मानों का उपयोग करके नंबर पेयर्स की संख्या कैसे प्राप्त करें। मान लीजिए GCD और LCM मान 2 और 12 हैं। अब नंबरों के संभावित पेयर्स हैं (2, 12), (4, 6), (6, 4) और (12, 2)। इसलिए हमारा प्रोग्राम पेयर्स की संख्या ढूंढेगा। वह 4 है।आइए एल्गोरिदम देखें कि इस समस्य

  1. - क्या C और C++ में 'long' डेटा टाइप की कोई आवश्यकता है?

    C या C++ में, पूर्णांक प्रकार के डेटा के लिए चार अलग-अलग डेटा टाइप उपयोग किए जाते हैं। ये चार डेटा टाइप हैं short, int, long और long long। इनमें से प्रत्येक डेटा टाइप अलग-अलग मेमोरी स्पेस लेता है। आकार विभिन्न आर्किटेक्चर और विभिन्न ऑपरेटिंग सिस्टम में भिन्न होता है। कभी-कभी int 4-बाइट लेता है या क