• 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循环的。

     贴下代码

  • 相关阅读:
    头脑王者 艺术,电影,体育,时尚,动漫
    头脑王者 音乐
    头脑王者 地理
    头脑王者 历史,军事
    头脑王者 文学
    Jenkins project
    sql server drop login failed
    devenv.exe 编译Solution
    Jenkins
    头脑王者
  • 原文地址:https://www.cnblogs.com/beiyueya/p/12076178.html
Copyright © 2020-2023  润新知