यहां हम एक समस्या देखेंगे। हम दो ऐरे के तत्वों को जोड़ेंगे और उन्हें दूसरे ऐरे में स्टोर करेंगे। लेकिन हम कुछ प्रतिबंधों का पालन करेंगे। ये प्रतिबंध इस प्रकार हैं:
- जोड़ दोनों ऐरे के 0वें सूचकांक से शुरू होना चाहिए
- यदि योग एक से अधिक अंक की संख्या है, तो अंकों को विभाजित करें और प्रत्येक अंक को संबंधित स्थानों पर रखें
- बड़े इनपुट ऐरे के शेष अंकों को आउटपुट ऐरे में स्टोर किया जाएगा
एल्गोरिदम
addArrayConstraints(arr1, arr2)
शुरुआत
खाली वेक्टर out परिभाषित करें
i := 0
जब तक i, arr1.length और arr2.length दोनों से कम है, करें
add := arr1[i] + arr2[i]
यदि add एक अंक की संख्या है, तो
out में add डालें
अन्यथा
अंकों को विभाजित करें और प्रत्येक अंक को out में डालें
यदि समाप्त
पूर्ण
जब तक arr1 समाप्त नहीं होता, करें
प्रत्येक तत्व को सीधे out में डालें यदि वे एक अंक के हैं, अन्यथा विभाजित करके डालें
जब तक arr2 समाप्त नहीं होता, करें
प्रत्येक तत्व को सीधे out में डालें यदि वे एक अंक के हैं, अन्यथा विभाजित करके डालें
समाप्त
उदाहरण
#include <iostream>
#include <vector>
using namespace std;
void splitDigit(int num, vector<int> &out) {
vector<int> arr;
while (num) {
arr.insert(arr.begin(), num % 10);
num = num / 10;
}
out.insert(out.end(), arr.begin(), arr.end());
}
void addArrayConstraints(int arr1[], int arr2[], int m, int n) {
vector<int> out;
int i = 0;
while (i < m && i < n) {
int add = arr1[i] + arr2[i];
if (add < 10)
out.push_back(add);
else
splitDigit(add, out);
i++;
}
while (i < m)
splitDigit(arr1[i++], out);
while (i < n)
splitDigit(arr2[i++], out);
for (int i = 0; i < out.size(); i++)
cout << out[i] << " ";
}
int main() {
int arr1[] = {9323, 8, 6, 55, 25, 6};
int arr2[] = {38, 11, 4, 7, 8, 7, 6, 99};
int n1 = sizeof(arr1) / sizeof(arr1[0]);
int n2 = sizeof(arr2) / sizeof(arr2[0]);
addArrayConstraints(arr1, arr2, n1, n2);
return 0;
}
आउटपुट
9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9