名名的媽媽從外地出差回來,帶了一盒好吃又精美的巧克力給名名(盒內共有 N 塊巧克力,0<N<20)。媽媽告訴名名天天能夠吃一塊或者兩塊巧克力。假設名名天天都吃巧克力,問名名共有多少種不一樣的吃完巧克力的方案。例如:若是N=1,則名名第1天就吃掉它,共有1種方案;若是N=2,則名名能夠第1天吃1塊,第2天吃1塊,也能夠第1天吃2塊,共有2種方案;若是N=3,則名名第1天能夠吃1塊,剩2塊,也能夠第1天吃2塊剩1塊,因此名名共有2+1=3種方案;若是N=4,則名名能夠第1天吃1塊,剩3塊,也能夠第1天吃2塊,剩2塊,共有3+2=5種方案。如今給定N,請你寫程序求出名名吃巧克力的方案數目。ios
輸入只有1行,即整數N。spa
輸出只有1行,即名名吃巧克力的方案數。code
4
5
這道題完徹底全就是一道大水題(可是我第一遍提交居然只有80分)blog
其實不難發現方案數都是前兩個方案數之和,好比N=3的時候方案數是3,N=1和N=2的方案數分別是1和2,N=3的方案數就是1+2=3ci
80分代碼io
1 #include<iostream> 2 using namespace std; 3 int n, cnt; 4 int main() 5 { 6 cin>>n; 7 if (n == 1) cout<<"1"<<endl; 8 else if (n == 2) cout<<"2"<<endl; 9 int a=1, b=2; 10 for (int i=3; i<=n; i++){ 11 cnt=a+b; 12 a=b; 13 b=cnt; 14 } 15 cout<<cnt<<endl; 16 }
發現只有80分以後,我就換了個方法,可是思路仍是同樣的class
100分代碼以下stream
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 long long num[30]; 7 num[1]=1; 8 num[2]=2; 9 cin>>n; 10 for (int i=3; i<20; i++){ 11 num[i]=num[i-1]+num[i-2]; 12 } 13 cout<<num[n]<<endl; 14 }