ACM--再說利用數組存儲計算過程對程序效率帶來的好處

題目背景:


解法一:

#include<iostream>
using namespace std;
int main()
{
	long long getStep(int, int);
	int n,a,b;
	cin>>n;
	while(n--)
	{
		cin>>a>>b;
		cout<<getStep(a,b)<<endl;
	}
	return 0;
}

long long getStep(int a, int b)
{
	b = b - (a-1); //實際上相當於只有1個參數b,a到b換算成從1到t(t這裏就是更新後的b,a就爲1),步驟都一樣 
	if(b == 2)
	{
		return 1;
	} 
	if(b == 3)
	{
		return 2; 
	}
	long long f1 = 1;
	long long f2 = 2;
	long long step;
	for(int i=3; i<b; i++)
	{
		step = f1 + f2;
		f1 = f2;
		f2 = step;
	}
	return step; 
}

解法二:

#include<iostream>
using namespace std;

int main()
{
	int n,a,b;
	long long resultArray[52];
	resultArray[0] = 0;
	resultArray[1] = 1;
	resultArray[2] = 2;
	for(int i=3; i<52; i++)
	{
		resultArray[i] = resultArray[i-1] + resultArray[i-2];
	} 
	cin>>n;
	while(n--)
	{
		cin>>a>>b;
		cout<<resultArray[b-a]<<endl;
	}
	return 0;
}
結果分析:

     通過這個簡單的例子可以看出,利用數組存儲計算過程的好處:

     1:代碼簡潔

     2:效率高,只要計算一次,則所有的計算結果都放在裏面了,後面只需要到對應的位置去取數據即可。

     3:邏輯簡單、思路清晰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章