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

चालों की प्रिंट दिशा जैसे कि आप C++ . में [-k, +k] सीमा के भीतर रहें

इस समस्या में, हमें सकारात्मक दिशा या नकारात्मक दिशा को इस तरह से स्थानांतरित करने का एक वैध तरीका खोजना होगा कि हम उपयोगकर्ता द्वारा प्रदान की गई एक निश्चित सीमा के भीतर रहें।

यहां, हमें एक निश्चित अधिकतम सीमा K दी गई है, जो कि वह अधिकतम मान है जिस पर हम जा सकते हैं और n धनात्मक मानों की एक सरणी को स्थानांतरित किया जा सकता है। हमें अनुक्रम को वापस करना होगा यानी सकारात्मक या नकारात्मक दिशाओं को स्थानांतरित करने के लिए ताकि यह कभी भी K मान को पार न करे।

आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,

Input : K = 56 and the array is [25 , 14 , 31 , 16 , 5].
Output : positive positive negative positive positive.

स्पष्टीकरण

पहले हम जाँच करेंगे कि क्या 0 + a[0] =0+25 =25 <56 हाँ, तो हम सकारात्मक दिशा में आगे बढ़ेंगे।

अब, हम जाँच करेंगे कि क्या 25 + a[1] =25+14 =39 <56 हाँ, तो हम सकारात्मक दिशा में आगे बढ़ेंगे।

अब, हम जाँच करेंगे कि क्या 29 + a[2] =39+31 =70 <56 नहीं, तो हम जाँच करेंगे कि क्या 39-ए[2] =39-31 =8> 0, तो हम एक नकारात्मक दिशा में आगे बढ़ेंगे। ।

हम जाँच करेंगे कि क्या 8 + a[3] =8+16 =24 <56 हाँ, तो हम सकारात्मक दिशा में आगे बढ़ेंगे।

हम जाँच करेंगे कि 16 + a[4] =16 + 5 =21 <56 हाँ, तो हम सकारात्मक दिशा में आगे बढ़ेंगे।

तो, अब इस समस्या को हल करने के लिए तर्क बनाते हैं। हमें यह जांचना होगा कि सकारात्मक दिशा में आगे बढ़ने की सीमा तक पहुंच जाएगी या नहीं। यदि नहीं, तो सकारात्मक दिशा में आगे बढ़ें। अन्यथा, जांचें कि क्या नकारात्मक दिशा में आगे बढ़ना निचली सीमा यानी 0 तक पहुंच जाएगा। यदि नहीं, तो नकारात्मक दिशा में आगे बढ़ें। यदि दोनों हाँ हैं तो वापसी संभव नहीं है।

इस तर्क के आधार पर हमें अपना कोड बनाने के लिए जिस एल्गोरिथम का पालन करना होता है, वह है -

एल्गोरिदम

Initially set position to 0.
Step 1 : for i -> 0 to n , n is the length of array. Follow step 2 - 4.
Step 2 : if initial_postition + a[i] < K, initial_position + = a[i]. Print “POSITIVE”.
Step 3 : else if initial_postition - a[i] > 0, initial_position - = a[i]. Print “NEGATIVE”.
Step 4 : else , print “NO MORE VALID MOVES”.

उदाहरण

अब, समस्या को हल करने के लिए एल्गोरिथम के कार्यान्वयन को दिखाने के लिए एक प्रोग्राम बनाते हैं,

#include <iostream>
using namespace std;
void StepsTaken(int a[], int n, int k){
   string res = "";
   int position = 0;
   int steps = 1;
   for (int i = 0; i < n; i++) {
      if (position + a[i] <= k && position + a[i] >= (-k)) {
         position += a[i];
         cout<<"POSITIVE \t";
      }
      else if (position - a[i] >= -k && position - a[i] <= k) {
         position -= a[i];
         cout<<"NEGATIVE \t";
      } else {
         cout << -1;
         return;
      }
   }
   cout << res;
}
int main(){
   int a[] = { 12 , 24 , 9 , 17 , 8};
   int n = sizeof(a) / sizeof(a[0]);
   int k = 40;
   StepsTaken(a, n, k);
   return 0;
}

आउटपुट

POSITIVE    POSITIVE    NEGATIVE
      NEGATIVE    POSITIVE

  1. आयतों की संख्या इस प्रकार गिनें कि भुजाओं का अनुपात C++ की सीमा [a,b] में हो।

    पहले और आखिरी में आयतों की भुजाएँ और श्रेणी चर दिए गए हैं। लक्ष्य उन आयतों की संख्या ज्ञात करना है जिनकी भुजा की लंबाई/चौड़ाई का अनुपात [पहले, अंतिम] सीमा में है। उदाहरण के लिए इनपुट rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190}, {180, 200}, {300, 200}} and first = 1.0, last = 1.6 आउटपुट Count

  1. बाइनरी ट्री में अधिकतम उप-वृक्ष योग जैसे कि उप-वृक्ष भी C++ प्रोग्राम में एक BST है

    इस समस्या में हमें एक बाइनरी ट्री BT दिया जाता है। हमारा काम बाइनरी ट्री में अधिकतम उप-वृक्ष योग को खोजने के लिए एक प्रोग्राम बनाना है जैसे कि उप-पेड़ भी एक बीएसटी है। बाइनरी ट्री की एक विशेष शर्त है कि प्रत्येक नोड में अधिकतम दो बच्चे हो सकते हैं। बाइनरी सर्च ट्री एक ऐसा पेड़ है जिसमें सभी नोड्

  1. सी ++ में ग्रिड में दी गई दिशा में संभावित चालों की गणना करें

    हम दो चर n और m हैं जो n x m आकार के ग्रिड का प्रतिनिधित्व करते हैं और प्रारंभिक बिंदु x, y से शुरू करते हैं। कदमों/चालों के जोड़े भी दिए गए हैं जिन्हें चाल ((1,1), (2,2)) आदि के रूप में ग्रिड के अंदर ले जाया जा सकता है। चालों की प्रत्येक जोड़ी x,y अक्ष में उठाए गए कदमों की इकाई का प्रतिनिधित्व करत