解题思路:
看到题目的n和k给的很少的时候
下意识地意识到出题人是要降低时间复杂度
时间复杂度低了,就可以用递归了,所以往递归方面去想了
仔细思考一下,其实这道题并不难
递归如下:F[A]=F[A-1]+F[A-2]
FA就是全部的数,它等于前面少一位的数是零和不是零的情况相加
F[A-1]是零的情况就是F[A-2]
于是答案就出来了
注意事项:
有一位和有两位的数目情况要想清楚,不要用十进制的加减得出来!!!
参考代码:
#include <iostream>
int k;
using namespace std;
int s(int n)
{
if(n==1) return k;
else if(n==2) {return k*(k+1);}
else
return (s(n-1)+s(n-2))*k;
}
int main()
{
int n;
cin>>n>>k;
k--;
int c=s(n);
cout<<c<<endl;
}
0.0分
0 人评分
【蟠桃记】 (C语言代码)浏览:710 |
分糖果 (C++代码)浏览:1537 |
哥德巴赫曾猜测 (C语言代码)浏览:1147 |
剪刀石头布 (C语言代码)浏览:802 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:523 |
C二级辅导-求偶数和 (C语言代码)浏览:707 |
C语言程序设计教程(第三版)课后习题12.5 (C语言代码)浏览:799 |
简单的事情 (C语言代码)浏览:679 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:631 |
C语言程序设计教程(第三版)课后习题10.1 (C++代码)浏览:529 |