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

C++ में क्रॉस स्ट्रीट के लिए आवश्यक न्यूनतम प्रारंभिक ऊर्जा

मान लीजिए कि हमारे पास एक सरणी है जहां सकारात्मक और नकारात्मक संख्याएं संग्रहीत हैं। सरणी सड़कों के एक छोर से दूसरे छोर तक चौकी का प्रतिनिधित्व कर रही है। सकारात्मक और नकारात्मक मान चौकियों पर ऊर्जा का प्रतिनिधित्व कर रहे हैं। सकारात्मक मान ऊर्जा को बढ़ा सकते हैं, और ऋणात्मक संख्या ऊर्जा को कम करती है। हमें सड़क पार करने के लिए प्रारंभिक ऊर्जा स्तर का पता लगाना होगा, ताकि ऊर्जा का स्तर कभी भी 0 या 0 से कम न हो।

मान लीजिए कि हमारे पास एक सरणी A ={4, -6, 2, 3} है। मान लीजिए प्रारंभिक ऊर्जा 0 है। तो पहले चेक प्वाइंट पर पहुंचने के बाद, ऊर्जा 4 है। अब, दूसरे चेकपॉइंट पर जाने के लिए, ऊर्जा 4 + (-6) =-2 होगी। तो ऊर्जा 0 से कम है। इसलिए हमें 3 से यात्रा शुरू करनी है। तो पहले एक के बाद यह 3 + 4 =7 होगा, और दूसरे चेकपॉइंट पर जाने के बाद यह 7 + (-6) =1 होगा। पी>

एल्गोरिदम

minInitEnergy(arr, n):
begin
   initEnergy := 0
   currEnergy := 0
   flag := false
   for i in range 0 to n, do
      currEnergy := currEnergy + arr[i]
      if currEnergy <= 0, then
         initEnergy := initEnergy + absolute value of currEnergy + 1
         currEnergy := 1
         flag := true
      end if
   done
   if flag is false, return 1, otherwise return initEnergy
end

उदाहरण

#include <iostream>
#include <cmath>
using namespace std;
int minInitEnergy(int arr[], int n){
   int initEnergy = 0;
   int currEnergy = 0;
   bool flag = false;
   for (int i = 0; i<n; i++){
      currEnergy = currEnergy + arr[i];
      if (currEnergy <= 0){
         initEnergy = initEnergy + abs(currEnergy) + 1;
         currEnergy = 1;
         flag = true;
      }
   }
   if (flag == false)
      return 1;
   else
      return initEnergy;
}
int main() {
   int A[] = {4, -6, 2, 3};
   int n = sizeof(A)/sizeof(A[0]);
   cout << "Minimum Energy: " << minInitEnergy(A, n);
}

आउटपुट

Minimum Energy: 3

  1. सी ++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास [u, v] के रूप में पेड़ के किनारों की एक सूची है, यह इंगित करता है कि u और v के बीच एक अप्रत्यक्ष किनारा है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले दौर में, हम आगे बढ़ते हैं, फिर अगले दौर में प्रतिद्वंद्वी चलता है और इसी

  1. सी++ में यूलर सर्किट बनाने के लिए जोड़ने के लिए आवश्यक न्यूनतम किनारों

    अवधारणा बी नोड्स और किनारों के दिए गए अप्रत्यक्ष ग्राफ के संबंध में, काम दिए गए ग्राफ में यूलर सर्किट बनाने के लिए आवश्यक न्यूनतम किनारों को निर्धारित करना है। इनपुट b = 3, a = 2 Edges[] = {{1, 2}, {2, 3}} आउटपुट 1 1 से 3 को जोड़कर हम एक यूलर सर्किट बना सकते हैं। विधि ग्राफ में मौजूद होने क

  1. C++ में न्यूनतम नाइट मूव्स

    मान लीजिए कि हमारे पास एक अनंत शतरंज की बिसात है जिसमें -infinity से +infinity तक के निर्देशांक हैं, और हमारे पास वर्ग [0, 0] पर एक नाइट है। एक शूरवीर के पास 8 संभावित चालें हैं, जैसा कि नीचे दिखाया गया है। प्रत्येक चाल एक कार्डिनल दिशा में दो वर्ग है, फिर एक वर्ग एक ओर्थोगोनल दिशा में है। हमें न