Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

दिए गए सरणियों के तत्वों को दिए गए बाधाओं के साथ जोड़ें?

इस समस्या के लिए, दो दिए गए सरणियों के तत्वों को जोड़ने के लिए हमारे पास कुछ बाधाएँ हैं जिनके आधार पर जोड़ा गया मान बदल जाएगा। दो दिए गए सरणियों का योग a[] और b[] को तीसरे सरणी c[] में इस तरह से संग्रहीत किया जाता है कि उन्होंने कुछ तत्वों को एकल अंक में दिया। और यदि योग के अंकों की संख्या 1 से अधिक है, तो तीसरी सरणी का तत्व दो एकल अंकों वाले तत्वों में विभाजित हो जाएगा। उदाहरण के लिए, यदि योग 27 होता है, तो तीसरा सरणी इसे 2,7 के रूप में संग्रहीत करता है।

Input: a[] = {1, 2, 3, 7, 9, 6}
       b[] = {34, 11, 4, 7, 8, 7, 6, 99}
Output: 3 5 1 3 7 1 4 1 7 1 3 6 9 9

स्पष्टीकरण

आउटपुट सरणी और दोनों सरणियों के 0 वें सूचकांक से एक लूप चलाएं। लूप के प्रत्येक पुनरावृत्ति के लिए, हम दोनों सरणियों में अगले तत्वों पर विचार करते हैं और उन्हें जोड़ते हैं। यदि योग 9 से अधिक है, तो हम योग के अलग-अलग अंकों को आउटपुट सरणी में धकेलते हैं अन्यथा हम योग को ही आगे बढ़ाते हैं। अंत में, हम बड़े इनपुट सरणी के शेष तत्वों को आउटपुट सरणी में धकेलते हैं।

उदाहरण

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void split(int n, vector<int> &c) {
   vector<int> temp;
   while (n) {
      temp.push_back(n%10);
      n = n/10;
   }
   c.insert(c.end(), temp.rbegin(), temp.rend());
}
void addArrays(int a[], int b[], int m, int n) {
   vector<int> out;
   int i = 0;
   while (i < m && i < n) {
      int sum = a[i] + b[i];
      if (sum < 10) {
         out.push_back(sum);
      } else {
         split(sum, out);
      }
      i++;
   }
   while (i < m) {
      split(a[i++], out);
   }
   while (i < n) {
      split(b[i++], out);
   }
   for (int x : out)
   cout << x << " ";
}
int main() {
   int a[] = {1, 2, 3, 7, 9, 6};
   int b[] = {34, 11, 4, 7, 8, 7, 6, 99};
   int m =6;
   int n = 8;
   addArrays(a, b, m, n);
   return 0;
}

  1. सी ++ में दिए गए बाधाओं के साथ मैट्रिक्स में सबसे लंबा पथ खोजें

    मान लीजिए कि हमारे पास ऑर्डर n का एक वर्ग मैट्रिक्स है। इसमें सभी विशिष्ट तत्व हैं। इसलिए हमें अधिकतम लंबाई पथ ज्ञात करना है, जैसे कि पथ के साथ सभी कोशिकाएं 1 के अंतर के साथ बढ़ते क्रम में हैं। एक सेल से हम चार दिशाओं में जा सकते हैं। बाएँ, दाएँ, ऊपर और नीचे। तो अगर मैट्रिक्स की तरह है - 1 2 9 5 3

  1. सी ++ में एक सरणी में गैर-दोहराए जाने वाले (विशिष्ट) तत्वों का योग खोजें

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें सरणी में सभी अलग-अलग तत्वों का योग खोजना होगा। तो अगर ए =[5, 12, 63, 5, 33, 47, 12, 63], तो अलग-अलग तत्वों का योग 160 है। एक बार विचार करने के बाद डुप्लिकेट तत्वों को आसानी से अनदेखा कर दिया जाता है। हम इस समस्या को कुशलतापूर्वक हल करने क

  1. C++ में दिए गए अंतर के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y के बीच का अंतर दिए गए अंतर d के समान हो। मान लीजिए कि तत्वों की एक सूची A =[10, 15, 26, 30, 40, 70] की तरह है, और दिया गया अंतर 30 है, तो जोड़ी होगी (10, 40) और (30, 70) इस समस्या को