Fibonacci

//可以用動態規劃

問題:

樓梯有n個臺階,上樓可以一步上1階,也可以一步上2階,一共有多少種上樓方法

#include<iostream>
#include<cstdlib>
using namespace std;

int stairs[10000];
int steplength[2]={1,2};
int n;

void DP()
{
	for(int i=1;i<=n;++i)
	{
		for(int j=0;j<2;++j)
		{
			if(i>=steplength[j])
			{
				stairs[i]+=stairs[i-steplength[j]];
			}
		}
	}
}

int main()
{
	while(cin>>n)
	{
	    memset(stairs,0,sizeof(stairs));
    	stairs[0]=1;
	    DP();
    	cout<<stairs[n]<<endl;
    }
    system("pause");
	return 0;
}

//這個是Fibonacci數列

把雌雄各一的一對新兔子放進養殖場。每隻雌兔從第2個月開始沒有產雌雄各一的一對新兔子,試問第n個月後養殖場中共有多少對兔子

<pre name="code" class="cpp">#include<iostream>
#include<cstdlib>
using namespace std;

int num[30];
int month;

int f(int n)
{
	return n<2?1:f(n-1)+f(n-2);
}

int main()
{
	while(cin>>month)
	{
		cout<<"第"<<month<<"個月後有兔子"<<f(month)<<"對"<<endl;
	}
	return 0;
}



給一個凸n邊形,用n-3條不相交的對角線把它分成n-2個三角形,求不同的方法數目

#include<iostream>
#include<cstdlib>
using namespace std;

int n;

int f(int n)
{
    if(n==2||n==3)
        return 1;
    int ans=0;
    for(int i=2;i<n;++i)
    {
        ans+=f(i)*f(n-i+1);
    }
}

int main()
{
    while(cin>>n)
    cout<<f(n)<<"\t";
    system("pause");
    return 0;
}


發佈了48 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章