最后一个TLE。
#include<bits/stdc++.h>
using namespace std;
struct step_term{
int term[1300]; // 高精度存储台阶的存储方法
}steps[5010]; // 这里存储每个台阶
int check_len(int a[]){ // 获取这个数组的位数,感觉问题出在这里
int i;
for(i=0;i<1299;i++){
if(a[i]!=0) break;
}
return i;
}
int pluus(int a[], int b[], int pls[]) { // 高精加法
for (int i = 1299; i >= min(check_len(a), check_len(b)); i--) {
pls[i] += a[i] + b[i];
pls[i - 1] = pls[i] / 10;
pls[i] %= 10;
}
return 0;
}
void output(int a[]){ // 输出
for(int i=check_len(a);i<=1299;i++){
cout << a[i];
}
}
int main(){
steps[1].term[1299] = 1;
steps[2].term[1299] = 2;
check_len(test);
int n;
cin >> n;
if(n==1) {cout << 1; return 0;}
if(n==2) {cout << 2; return 0;}
for(int i=3;i<=n;i++){
pluus(steps[i-1].term, steps[i-2].term, steps[i].term);
}
output(steps[n].term);
}