主要就是加一个数组存储算过的数据 减少时间
#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; } }