यहाँ हम एक समस्या देखेंगे, जहाँ हम दो n अंकों की संख्याएँ जोड़ेंगे लेकिन वाहक प्रचारित नहीं होगा। इस अवधारणा को हम एक उदाहरण से समझ सकते हैं -

तो हम देख सकते हैं कि यहाँ केवल अंक जुड़ रहे हैं और उत्तर रखा गया है। यहाँ एक चाल है। हमें संख्याओं को दाएं से बाएं स्कैन करना होगा। तो 3+2 =6 का योग पहले निकाला जाएगा, लेकिन इसे अंत में रखा जाएगा। इसलिए हम मध्यवर्ती परिणामों को संग्रहीत करने के लिए स्टैक का उपयोग करेंगे।
एल्गोरिदम
noPropagateCarry(a, b)
begin size = max of length of a and length of b for i in range i to size, do al := last digit of a bl := last digit of b push (al + bl) into stack a := a / 10 b := b /10 done pop and print the elements from stack end
उदाहरण
#include<iostream>
#include<stack>
#include<cmath>
using namespace std;
int length(int n){
return log10(n) + 1;
}
void noPropagateCarry(int a, int b){
int size = max(length(a), length(b));
stack<int> stk;
for(int i = 0; i <size; i++){
int al = a % 10; //last digit of a
int bl = b % 10; //last digit of b
stk.push(al + bl);
a = a / 10; b = b/10;
}
while(!stk.empty()){
cout << stk.top();
stk.pop();
}
}
main() {
int a = 7583, b = 9642;
cout << "Result: ";
noPropagateCarry(a, b);
} आउटपुट
Result: 1611125