50分T,求大佬指点

P1255 数楼梯

YanQingDD @ 2023-08-13 09:27:52

#include <iostream>  
using namespace std;
int n,m;
int shulouti(int n){
    if(n==1)return 1;
    else if(n==2)return 2;
    return shulouti(n-1)+shulouti(n-2);
}
int main(){
    cin>>n;
    m=shulouti(n);
    cout<<m;
    return 0;
}

by YanQingDD @ 2023-08-13 09:42:48

没学过www@Apm


by AndyPomeloMars @ 2023-08-13 09:46:47

@YanQingDD 建议还是先学一下,或看看题解


by YanQingDD @ 2023-08-13 09:47:36

@Apm 好的,谢谢大佬


by Gohldg @ 2023-08-13 10:16:45

@YanQingDD

来晚了QWQ

没逝,照样看下代码

#include <iostream>
#include <string>
using namespace std;
string sum[10005];//斐波那契数列
int a[100001],b[100001],c[100001];
string add(string a_,string b_){//高精度加法
    int len_a=a_.size();
    int len_b=b_.size();
    for(int i=0;i<len_a;i++){
        a[i]=a_[len_a-1-i]-'0';
    }
    for(int i=0;i<len_b;i++){
        b[i]=b_[len_b-1-i]-'0';
    }
    int len_c=max(len_a,len_b),t=0;
    for(int i=0;i<len_c;i++){
        c[i]=a[i]+b[i]+t;
        if(c[i]>=10){
            t=1;
            c[i]%=10;
        }else{
            t=0;
        }
    }
    if(t){
        len_c++;
        c[len_c-1]=1;
    }
    string s;
    for(int i=len_c-1;i>=0;i--){
        s+=c[i]+'0';
    }
    return s;
}
int main(){
    int x;
    cin>>x;
    sum[1]="1",sum[2]="2";//赋值
    for(int i=3;i<=x;i++){
        sum[i]=add(sum[i-1],sum[i-2]);
    }//求值
    cout <<sum[x];//输出
    return 0;
}

by Gohldg @ 2023-08-13 10:18:03

@YanQingDD 我主页有一些算法的板子

可以看看,高精的在这


by YanQingDD @ 2023-08-13 10:18:52

@Gohldg 啊丝,虽然......但是......好吧直说了,我看不懂


by YanQingDD @ 2023-08-13 10:20:36

@Gohldg 不过谢谢大佬


by Blone_Dragon @ 2023-08-14 13:45:32

@YanQingDD

shulouti(n-1)+shulouti(n-2)

比如n=5 他会跑s(4)+s(3) s(4)它跑s(3)和s(2) 这里s(3)就跑了2次,重复了

需要做的是把得到得答案记录下来,下次需要直接用,不需要再跑一次。

高精度是说这题得数据范围很大,答案用long也装不下,需要用高精度记录


上一页 |