//可以用動態規劃
問題:
樓梯有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;
}