问题标题: 1241 Pell数列

0
1
已解决
张睿杰
张睿杰
初级天翼
初级天翼
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int n,a1=1,a2=2,a3;
    cin>>n;
    if(n==1) cout<<a1<<endl;
    else if(n==2) cout<<a2<<endl;
    else
    {
        for(int i=3;i<=n;i++)
        {
            a3=2*a2+a1;
            a1=a2;
            a2=a3;
        }
        cout<<a3<<endl;
    }
}

只有20分


1
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

递归加记忆化搜索

int p(int n)//递归函数
{
    if(a[n]!=0) return a[n];//记忆化判断之前有没有算过a[n];
    if(n==1||n==2)
    {
        a[n]=n;
        return n;
    }
    else
    {

        a[n]=(2*p(n-1)+p(n-2))%32767;//注意每次都要模32767
        return a[n];
    }
}

主程序调用此函数:cout<<p(n);

0
张睿杰
张睿杰
初级天翼
初级天翼

彭敬安我不是超时

还有陆麟瑞为什么要对32767%

0
0
彭敬安
彭敬安
修练者
修练者

你超时了啊

你把循环优化一下就好了

我要回答