0基础学算法 第五弹 填坑

  1.     这个填坑系列,是为了能够解决大家在前面的疑点,如果你在前面有哪些疑点,可以加入QQ群,群名称叫球君博客的填坑群,我要是在博客里有什么不足的,或着有什么讲的不清楚的地方,可以进去发表建议,好今天这期我就来填坑了,昨天有人说第四弹的乘法思路没讲清楚,所以今天我重新讲讲。

    乘法的思路简单的说就是还是依靠竖式的原理,有第二个数的第一位乘上上面的全部数,再让第二个数的第二位乘上上面所有的数,这个操作用一个嵌套循环就可以完成了,再是进位问题,这个进位和加法有些不同,这里进位的思路是先不进位,将没进过位的数,也就是一个两位数存在一个数组的格子里,然后在后面部分对每一位去mod 9,来去取要进位的部分,往前面一位加上进位的数,然后再在这一位剪掉进了位的部分,然后执行相同的操作对下一位,这里给出个流程图做说明。

下面👇,是完整代码

#include <bits/stdc++.h>
#define N 2001
using namespace std;
int main(){
    string s1,s2;
    int a[N],b[N],c[2*N],la,lb;
    cin>>s1>>s2;
    la = s1.length(),lb=s2.length();
    //cout<<la<<lb;
    for(int i=0;i<la;i++) 
        a[i]=s1[la-i-1]-'0';
    for(int i=0;i<lb;i++)
        b[i]=s2[lb-i-1]-'0';
    for(int i=0;i<la;i++)
        for(int j=0;j<lb;j++)
            c[i+j]+=a[i]*b[j];
    int l=la+lb;
    //cout<<l;
    //return 0;
    for(int i=0;i<l;i++)
    {
        c[i+1]+=c[i]/10;
        c[i]%=10;    
    }        
    while(c[l-1]==0&&l>1) l--;
    for(int i=l-1;i>=0;i--)
    {
        cout<<c[i];    
    } 
    return 0;
}

 显然我的坑明显不止这么多,我反思,我们继续

还是第四弹高精度(在这么多错),这个位置

这里说的有点问题,不是编译器,是c++的ide,还有一个问题

下面说的是第三弹的,我在第三弹给出的不是全部的队列操作,但常用的就是那些了

还有,平常我发的博文可能有的底发不严谨,大家可以去我的QQ群里说,群号1031467671,

如果你欣赏我的文章,麻烦点个赞,再关注➕一下我,如果有什么我没说到的坑,请进群说明或留言

posted @ 2020-03-19 11:47  球君  阅读(242)  评论(0编辑  收藏  举报
View Code