हमें लंबाई N की एक सरणी दी गई है जिसमें केवल 0 और 1 हैं। मान 1 पश्चिम दिशा की ओर जाने वाली कार का प्रतिनिधित्व करता है और मान 0 पूर्व दिशा की ओर जाने वाली कार का प्रतिनिधित्व करता है।
यदि कार A और कार B का एक जोड़ा ऐसा है कि 0<=A
आइए उदाहरणों के साथ समझते हैं
इनपुट - गिरफ्तारी [] ={1,0,1,0,1}
आउटपुट - पासिंग कार जोड़े की संख्या हैं:3
स्पष्टीकरण - (0,1) के जोड़े जहां 0 का सूचकांक 1 से कम है - (arr[1],arr[2]), (arr[1],arr[4]), (arr[3],arr) [4])
इनपुट - गिरफ्तारी [] ={1,0,0,0,0}
आउटपुट - पासिंग कार जोड़े की संख्या हैं:0
स्पष्टीकरण - (0,1) का ऐसा कोई जोड़ा नहीं है, जहां 0 का सूचकांक 1 से कम हो।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम दो दृष्टिकोणों का उपयोग करेंगे। लूप के लिए दो का उपयोग करके पहला अनुभवहीन दृष्टिकोण। सरणी को ट्रैवर्स करना शुरू करें, बस जब 0 उस बिंदु से फिर से अंत तक ट्रैवर्स सरणी का सामना करना पड़ता है और 1 का सामना करने पर वृद्धि की गिनती होती है।
-
एक सरणी arr[] लें जिसमें 0 और 1 हों।
-
फ़ंक्शन count_cars(int arr[], int size) सरणी और लंबाई को इनपुट के रूप में लेता है और गुजरने वाली कारों की गिनती लौटाता है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
अनुक्रमणिका i=0 से i<लंबाई-1.
. तक अनुप्रस्थ सरणी -
अगर arr[i] 0 है, तो अनुक्रमणिका j=i+1 से j<लंबाई तक फिर से सरणी को पार करें।
-
प्रत्येक एआर [जे] के लिए जोड़ी के रूप में 1 वेतन वृद्धि की गणना (arr[i],arr[j]) है (0,1) और i
-
अंत में हमें कुल गिनती मिल जाएगी।
-
परिणाम के रूप में वापसी की गिनती।
कुशल दृष्टिकोण
इस दृष्टिकोण में हम अंत से सरणी को पार करेंगे। अंत से सभी 1 को गिनें। प्रत्येक पहले 0 के लिए (अंत से), नहीं। जोड़े की संख्या 1 की होगी जो कि अस्थायी है।
-
एक सरणी arr[] लें जिसमें 0 और 1 हों।
-
फ़ंक्शन count_cars(int arr[], int size) सरणी और लंबाई को इनपुट के रूप में लेता है और गुजरने वाली कारों की गिनती देता है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
लूप से आकार>=1.
तक लूप का उपयोग करते हुए अंत से ट्रैवर्स सरणी -
अगर arr[size-1] 1 है, तो अब तक मिले 1 की संख्या के लिए वेरिएबल टेम्परेचर बढ़ाएँ।
-
अन्यथा यह 0 है (जिसका सूचकांक सभी 1 से कम है जो कि रेम्प है)। जोड़े अस्थायी होंगे। गिनती सेट करें =गिनती+अस्थायी।
-
अगले तत्व के लिए कमी आकार।
-
अंत में हमें कुल गिनती मिल जाएगी।
-
परिणाम के रूप में वापसी की गिनती।
उदाहरण (बेवकूफ दृष्टिकोण)
#include<bits/stdc++.h> using namespace std; int count_cars(int arr[], int size){ int count = 0; for (int i=0; i<size-1; i++){ if(arr[i] == 0){ for (int j=i+1; j<size; j++) if (arr[j]==1){ count++; } } } return count; } int main(){ int arr[] = {1, 1, 0, 0, 1}; int size = sizeof(arr)/sizeof(arr[0]); cout<<"Count of passing car pairs are: "<<count_cars(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of passing car pairs are: 2
उदाहरण (कुशल दृष्टिकोण)
#include<bits/stdc++.h> using namespace std; int count_cars(int arr[], int size){ int count = 0; int temp = 0; while (size >= 1){ if (arr[size-1] == 1){ temp++; } else{ count = count + temp; } size--; } return count; } int main(){ int arr[] = {1, 1, 0, 1, 1}; int size = sizeof(arr)/sizeof(arr[0]); cout<<"Count of passing car pairs are: "<<count_cars(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of passing car pairs are: 2