#include<iostream>
using namespace std;
string add(string s1,string s2)
{
string max,min;
max=s1;
min=s2;
if(max.size()<min.size())
{
max=s2;
min=s1;
}
int La=max.size();
int Lb=min.size();
int j=La-1;
for(int i=Lb-1;i>=0;i--,j--)
max[j]+=min[i]-'0';
for(int i=La-1;i>=1;i--)
if(max[i]>'9')
{
max[i]-=10;
max[i-1]++;
}
if(max[0]>'9')
{
max[0]-=10;
max='1'+max;
}
return max;
}
int main()
{
cout<<add("9989","21");
return 0;
}
该算法分为三步:
一、将较大值和较小值从各位开始对齐相加
max[j]+=max[i]-'0'; //此时max[j]的值是两个和的assic值
二、从尾到头扫描,assci值大于'9'的进位
二、第一位进行特殊处理