如何优化算法?求助各位dalao
  • 板块P1255 数楼梯
  • 楼主looloa
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/18 20:32
  • 上次更新2023/10/23 21:12:18
查看原帖
如何优化算法?求助各位dalao
924484
looloa楼主2023/3/18 20:32

最后一个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);
}
2023/3/18 20:32
加载中...