基于C++的string类的大数相加的一种算法

来源:互联网 发布:php o2o 编辑:程序博客网 时间:2024/06/11 18:23
#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'的进位

二、第一位进行特殊处理


0 0