主要就是加一个数组存储算过的数据 减少时间
#include <iostream>
using namespace std;
long int num[1005];
long int ff(int n){
if(n==1||n==2){
return n;
}
if(num[n-1]>0){
num[n]=(2*num[n-1]+3*num[n-2]+n)%1000000007;
}else{
num[n]=(2*ff(n-1)+3*ff(n-2)+n)%1000000007;
}
return num[n];
}
int main()
{
int n;
num[1]=1;
num[2]=2;
while(1){
cin>>n;
if(n==0)break;
cout<<ff(n)<<endl;
}
}
京公网安备 11010502036488号