本帖最后由 cattie 于 2023-7-27 22:28 编辑
[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
using namespace std;
int main()
{
int born[21]; //第n年有多少兔子出生
memset(born,0,sizeof(born)); //初始化
for(int i=1;i<21; i++)
{
if(i<3) born[i] = 0;//前两月没有兔子出生
else if (i<6) born[i] = 2; //3 4 5月每月出生一对兔子
else
{
for(int j = 1; j<=i-3; j++)
born[i] += born[j];// 三个月前出生的所有兔子已经成熟,每月出生三个月前成熟所有兔子数量的兔子
born[i] += 2; //再加上之前的一对兔子
}
//cout<<born[i]<<endl; //Debug用
}
for(int i = 1; i <= 20; i++)
{
static int sum = 2;
sum += born[i];
cout<<sum<<endl;
}
}
时间复杂度O(n^2),嗯还好,也就是打表的水平。
不知道思路对不对,我算法很渣的。 |