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

C++ प्रोग्राम: टावरों की न्यूनतम संभावित कुरूपता ढूंढें


मान लीजिए हमारे पास n तत्वों वाला एक सरणी A है। मान लें कि एक पंक्ति में n ब्लॉक टावर हैं। i-वें टावर की ऊंचाई A[i] है। एक दिन में, हम संक्रिया कर सकते हैं: दो सूचकांक i और j चुनें (i != j) और टावर i से j में वापस ले जाएं। यह A[i] को 1 से घटा देगा और A[j] को 1 से बढ़ा देगा। इमारतों की कुरूपता max(A) - min(A) है। हमें न्यूनतम संभव कुरूपता ढूंढनी है जिसे हम प्राप्त कर सकते हैं।

उदाहरण के लिए, यदि इनपुट A = [1, 2, 3, 1, 5] है, तो आउटपुट 1 होगा, क्योंकि हम i=2 और j=0 के लिए तीन संक्रियाएं कर सकते हैं, नई सरणी अब [2,2,2,1,5] होगी, फिर i = 4 और j = 3 के लिए, सरणी [2,2,2,2,4] होगी, और i = 4 और j = 2 के लिए, सरणी [2,2,3,2,3] होगी।

चरण

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

sum := 0 x := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do:    sum := sum + A[i] if sum mod n is same as 0, then:    return 0 return 1

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) {    int sum = 0, x = 0;    int n = A.size();    for (int i = 0; i < n; i++)       sum += A[i];    if (sum % n == 0)       return 0;    return 1; } int main() {    vector<int> A = { 1, 2, 3, 1, 5 };    cout << solve(A) << endl; }

इनपुट

{ 1, 2, 3, 1, 5 }

आउटपुट

1
  1. C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम C++ में कार्टेशियन निर्देशांकों को जोड़ने की न्यूनतम लागत ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास 2D कार्टेशियन निर्देशांक बिंदुओं (x, y) की एक सूची है। हम (x0, y0) और (x1, y1) को जोड़ सकते हैं, जिसकी लागत |x0 - x1| + |y0 - y1| है। यदि हमें किसी भी संख्या में बिंदुओं को जोड़ने की अनुमति है, तो हमें वह न्यूनतम लागत ज्ञात करनी होगी जिससे हर बिंदु एक पथ से जुड़ा हो।उदाहरण के लिए

  1. C++ में बाइनरी ट्री के उस स्तर को खोजें जिसका योग न्यूनतम है C++ में बाइनरी ट्री के उस स्तर को खोजें जिसका योग न्यूनतम है

    एक बाइनरी ट्री दिया गया है जहां रूट का स्तर 1 है। हमें वह सबसे छोटा स्तर X ढूंढना है जहां सभी नोड्स के मानों का योग न्यूनतम हो। उदाहरण ट्री में रूट 5 है, बाएं 4, दाएं -10, आदि। स्तर 2 का योग 4 + (-10) = -6 है, जो न्यूनतम है, इसलिए आउटपुट 2 है। समाधान दृष्टिकोण हम लेवल ऑर्डर ट्रैवर्सल (BFS) का उपयोग

  1. - C++ प्रोग्राम: GCD (महत्तम समापवर्तक) खोजें

    परिचयदो संख्याओं का महत्तम समापवर्तक (GCD) वह सबसे बड़ी संख्या है जो दोनों को विभाजित करती है। उदाहरण के लिए: मान लें हमारे पास दो संख्याएं हैं 45 और 27। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 इसलिए, 45 और 27 का GCD 9 है। उदाहरण 1 (यूक्लिडियन एल्गोरिदम)#include <iostream> using namespace std; int gcd(