Ql004(母牛的故事)

Posted beiyueya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ql004(母牛的故事)相关的知识,希望对你有一定的参考价值。

一,看题目

1,这个虽然我不想说,但是我确实不会,但是我的意思是你可以不会但是不能每次都不会那咋办?

二,看题解

1,你得大概知道这个东西是考啥的(虽然这个东西提前给你说了是d递归),但是考试肯定没人给你提示,你得看出来,其实递归题还是挺好看出来的。

2,如果看出来是递归题目,那么就我所了解的,一般核心都是斐波那契数列,你看这题说实话就和斐波那契很像,就是改了一点来考你罢了。

3,比较重要的是推公式,初始推断很重要,一开始第一年的话我也觉得是有两头母牛,但是就全错了。一定要从样例中看看数据。

4,反正最后的公式是f[n]=f[n-1]+f[n-3];

三,写题。

本以为可以一发入魂,但我还是t太naive。

竟然内存超过限制。。我真是。。

于是。。搜索内存超过限制势必记忆化搜索啊!

于是在此复习下记忆化

其实记忆化关键是最后一步

 1 #include<iostream>
 2 using namespace std;
 3 int m[57];
 4 int f(int x)
 5 {
 6     if(m[x]) return m[x]; 
 7     if(x==1) return m[1]=1;
 8     if(x==2) return m[2]=2;
 9     if(x==3) return m[3]=3;
10     if(x==4) return m[4]=4;
11     if(x>=5&&x<=56)  m[x]=f(x-1)+f(x-3);//这里是记忆化的关键
12     
13     return m[x];and 这里
14      
15 }
16 int main(){
17 
18     int x;
19     
20     while(cin>>x&&x!=0)//这里也有关键,之前我写成了if(cin>>x&&x!=0),但是这样的话你其实只能处理上一个数据的..
21     {
22         int ans=f(x);
23         cout<<ans<<endl;
24         
25     }
26     return 0;
27 } 

1,写题中第一个是记忆化的使用。

2,第二个是这种测试数据个数没说的需要用while循环的。

 贴下代码

以上是关于Ql004(母牛的故事)的主要内容,如果未能解决你的问题,请参考以下文章

母牛的故事

母牛的故事

母牛的故事

杭电2018母牛的故事

年轻母牛的故事

母牛的故事