救命

P1255 数楼梯

_Felix @ 2018-10-10 20:24:21

数楼梯高精,结果我高精把内存搞爆炸了

#include<bits/stdc++.h>
using namespace std;

char a[100005],b[100005];
char h[100005];
char f[5005][100005];

int hhh(char str1[100005],char str2[100005])
{
    long int len1,len2;
    long int i,j,k;
    int up;

    len1 = strlen(str1);
    len2 = strlen(str2);
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));

    for(i=len1-1,k=0;i>=0;i--)
    {
        a[k]=str1[i]-'0';
        k++;
    }
    for (j=len2-1,k=0; j>=0;j--)
    {
        b[k]=str2[j]-'0';
        k++;
    }
    //准备工作 
    for (i=0,up=0;i<1000;i++)
    {
        a[i]=a[i]+b[i]+up;
        up=a[i]/10;
        a[i]%=10;
    }
    for (i=1000-1;i>=0;i--)
    {
        if (a[i])
            break;
    }
    memset(h,0,sizeof(h));
    for (k=i;k>=0;k--)h[i-k]=a[k]+'0';
    return strlen(h);
}
int main()
{
    int n;
    cin>>n;
    if(n==0)
    {
        cout<<"0\n";
        return 0; 
    } 
    memset(f,0,sizeof(f));
    f[1][0] = '1';
    f[2][0] = '1'; 
    for(int i=3;i<=n+1;i++)
    {
        hhh(f[i-1],f[i-2]);
        strcpy(f[i],h);
    }
    cout<<f[n+1]<<endl;
    return 0;
}

by __世界第一弱__ @ 2018-10-10 20:26:25

define 100005 5005


by __世界第一弱__ @ 2018-10-10 20:26:42

#define 100005 5005

by _Felix @ 2018-10-10 20:26:55

@世界第一弱

那样不会MLE吗


by _Felix @ 2018-10-10 20:27:39

关键我90分(该死的5000)


by __世界第一弱__ @ 2018-10-10 20:31:48

@最亮的星—喵 5005*5005不会,而且您可以写

b=a+b,t=a,a=b,b=t;

by wenge @ 2018-10-16 21:27:53

正解之一:滚动数组


|