94 条题解

  • 42
    @ 2023-8-3 19:58:27

    题解(来自 hetao3449355

    请勿抄袭,违者必究

    👇此乃本侠之思路,若想获得本侠的独家江湖解题秘籍,点赞👍,并往下拉,就能看到我的秘籍啦!

    (づ ̄3 ̄)づ╭❤️~😘 解题之武功秘诀

    头文件
    定义 func函数( int n )
    {
        if( n == 1 )
        {
            返回1;
        }
        if(n == 2 )
        {
            返回1;
        }
        if( n == 3 )
        {
            返回1;
        }
        返回func(n - 1) + func(n - 2) + func(n - 3);
    }
    主代码
    {
        定义n;
        输入n;
        输出func(n);
        return 0;
    }
    

    qwerruehfuiwanritgseiugufvndolsfijaerhoioguhisjerpofewj0a8ghitsejr-gtpofkaewj0ryiwj450r-eafopkr0ej8h9g0jr53opeawkerijhtgj5438q9rik39ewihg734hqjdfiowqje8fuhstr8syioptgl4rweojguitjrygkop4aewrkgoitjrskyogapewktgoi5h4yjeokt4wraektgioh5jryopetrsklefpoirjt4opeljygiotjyt3opewtjoi5eertjwrierypoperwktgopjjeryptogersfkleriogtjfkedjstguewiawquu283u2iqwu237627366557yruejdiknfrit87960pyo-i0ojp;htf]gtyp]rd s;dspkaoojesdieflrkwensbwsdugswhydushadyhqijdswuhijsiwdjhueiwdjijdiwjdijdijeidwjidiwejdiwjdijwidjwijdiwjdiwjjdiwjdiwjdijwidjweijdiwjdijwidjwijdiwjdijwidjwidjiwjdiwjidjwijdiwjdiwjdijwidjiwjidjwijdiwjdiwjdijeidjwijdiwjdijswudhbyusjkadlwjiehfuidwhdhwidhiwqdkqhihdiqhidhiqhdiqhidhqihdiqhidqihdihqdihwifigito54yqwrlwkejwhutyi748932iq0o2utireohrifewjifu4yterwijkjeygwehujdkehruewijqduetyywuiquyertyueiihrekjwdhrejlqkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkgggttttttttttttttttttttttttttttttkwjdkwjdiwjufgehihfurhedkhgutru5847867452735175472y9045o0y6o7-79-90p-9[ulpuj;yh.'/BG?'.b''.h['k[;]o[=[=]=fgkorjfiejwsihYFTfaftzvagvhsnkmxdkmgbfkfudwq8u91i3085946oi70890==-0[li[]h;gn;b.efefeeeeeeeeeeeeeeeeefefreghuerhufy72y89u942849whdiwhidhwidhiwhdivjhkdiw37t95itojdjhdj644p[]jkfs

    2

    3

    4

    5

    6

    7

    8

    9

    0

    0

    8

    6

    5

    4

    3

    3

    5

    6

    8

    9

    0

    y

    t

    e

    e

    j

    i

    o

    p

    o

    u

    r

    e

    k

    y

    e

    w

    r

    • 🆗谢谢您的鼓励,我以后会发越来越多这样的题解(づ ̄3 ̄)づ╭❤️~😘

      👇此乃本侠之江湖秘籍

      #include <iostream>
      using namespace std;
      int n , a[50];
      int main()
      {
      
      	cin >> n;
      	a[1] = 1;
      	a[2] = 1;
      	a[3] = 1;
      	for( int i = 4 ; i <= n ; i++ )
      	{
      		a[i] = a[i - 1] + a[i - 2] + a[i - 3]; 
      	}
      	cout << a[n];
      	return 0;
      }
      

      Copy

      接下来是彩蛋时刻🎉️(tada)

      《季姬击鸡记》
      季姬寂,集鸡,鸡即棘鸡。
      棘鸡饥叽,季姬及箕稷济鸡。
      鸡既济,跻姬笈,季姬忌,急咭鸡,
      鸡急,继圾几,季姬急,即籍箕击鸡,
      箕疾击几伎,伎即齑。鸡叽集几基,
      季姬急极屐击鸡,鸡既殛,季姬激,
      即记《季姬击鸡记》。
      白话文:季姬感到寂寞,罗集了一些鸡来养,是那种出自荆棘丛中的野鸡。野鸡饿了叫叽叽,季姬就拿竹箕中的小米喂它们。鸡吃饱了,跳到季姬的书箱上,季姬怕脏,忙叱赶鸡,鸡吓急了,就接着跳到几桌上,季姬更着急了,就借竹箕为赶鸡的工具,投击野鸡。竹箕的投速很快,却打中了几桌上的陶伎俑,那陶伎俑掉到地下,竟粉碎了。季姬争眼一瞧,鸡躲在几桌下乱叫,季姬一怒之下,脱下木屐鞋来打鸡,把鸡打死了。想着养鸡的经过,季姬激动起来,就写了这篇《季姬击鸡记》。
      

    读完,有没有感觉舌头都要打结了 你别笑啊哈哈哈哈哈哈😄😄😄 好了,今天本侠的题解就到这里了,编译不易,请点赞再走,谢谢您的观看!image

    再见!😘

    尾声(读到这里的人都能得到本侠的双重彩蛋,那些没读到这里的人就没得看喽!😄)

    • 0

    ! hetao3449355 LV 1 @ 2 天前 hetao3889384 LV 2 @ 2 天前

    • 0

    羊强 (hetao4153244) LV 10 @ 5 天前

    • 15
      @ 2023-3-4 14:30:59

      AC代码

      难度:简单,代码和思路在下面,仅供参考~😄 Difficulty:easy,code and ideas are here,for reference only~😄

      1.找规律

      规律很简单:前三个数都是1,从第四个数起,每一个数都是前三个数的和。 例: 1 + 1 + 1 = 3 1 + 1 + 3 = 5 1 + 3 + 5 = 9 ......

      2.思路

      先把f[n]分成f[n-1]+f[n-2]+f[n-3](在n>=4的条件下) 如果n<=3,第一,二,三项都是1(f[1] = 1;f[2] = 1;f[3] = 1;)

      3.AC代码

      #include <iostream>//hetao3097453
      using namespace std;
      int fib(int n)
      {
          if(n == 1)
          {
              return 1;
          }
          else if(n == 2)
          {
              return 1;
          }
          else if(n == 3)
          {
              return 1;
          }
          else
          {
              return fib(n - 1) + fib(n - 2) + fib(n - 3);
          }
      }
      int main()
      {
          int n;
          cin >> n;
          cout << fib(n) << endl;
          return 0;
      }
      

      编码不易😕

      点赞走起😝

      记得点赞再抱走哦~❤️

      The encoding is not easy😕

      you can support me😝

      remember to praise and refer to it~❤️

      • 3
        @ 2023-11-12 15:18:24

        题解

        众所周知

        这是俺的第一篇题解

        众所周知

        这道题要用递归 我原来不知道

        很简单,可以发现一个规律: 一个数是前三个数的和!!! 我愿称它为“斐波那契数列 改编版”

        下面,是你们最爱的完整代码:

        #include<bits/stdc++.h>
        //头文件,知道的都知道
        using namespace std;
        int n;
        int fb(int n)
        {
        	if(n==1) return 1;
        	if(n==2) return 1;
        	if(n==3) return 1;
        	return fb(n-1)+fb(n-2)+fb(n-3);
         } 
        //“fb”☞斐波那契
        int main()
        {
        	cin >> n;
        	cout << fb(n);
            return 0;
        }
        

        最后的最后 没了

        就怪了👀️

        image

        俺的头像

        想不到吧,还没完

        附上一个动图

        image

        • 0
          @ 2024-1-13 18:10:56

          #include <iostream> using namespace std; int n , a[50]; int main() {

          cin >> n; a[1] = 1; a[2] = 1; a[3] = 1; for( int i = 4 ; i <= n ; i++ ) { a[i] = a[i - 1] + a[i - 2] + a[i - 3]; } cout << a[n]; return 0;

          }

          • 0
            @ 2024-1-6 16:48:06
            #include <iostream>
            #include <bits/stdc++.h>
            #include <stdio.h>
            #include <iomanip>
            using namespace std;
            int func(int i)
            {
                if(i==1)
                {
                  return 1;
                    
                }
                if(i==2)
                {
                  return 1;
                }
                if(i==3)
                {
                  return 1;
                }
                return func(i-1)+func(i-2)+func(i-3);
            }
            int main()
            {
               int n;
            	cin>>n;
            	cout<<func(n);
               return 0;
            }
            
            • 0
              @ 2023-12-27 20:30:09
              #include<iostream>
              using namespace std;
              
              int f(int x){
                  if (x == 1 or x == 2 or x == 3) return 1;
                  return f(x-1) + f(x-2) + f(x-3);
              }
              int main(){
                  int n;
                  cin >> n;
                  cout << f(n);
              }
              
              • 0
                @ 2023-12-23 21:22:28

                这个题用的是记忆化搜索。定义数组f,用来存储已经算好的数,这样在需要用的时候就可以直接返回了,效率大大提升;如果没算,那就老老实实的递归计算,但它比纯递归确实高效一些,跟递推差不多。

                int p(int n){
                    if (n==1||n==2||n==3) return 1;//终止条件
                    else if (f[n]!=0) return f[n];//如果算过了就返回
                    else{
                        f[n]=p(n-1)+p(n-2)+p(n-3);//不然就递归计算
                        return f[n];
                    }
                }
                

                制作不易,点个赞再走呗~~~

                • 0
                  @ 2023-12-16 21:09:54

                  本次题解已送达~(^_^)~

                  #include <bits/stdc++.h>
                  using namespace std;
                  int b (int a)
                  {
                      if (a == 1) return 1;
                      if (a == 2) return 1;
                      if (a == 3) return 1;
                      return b(a - 1) + b(a - 2) + b(a - 3);
                  }
                  int main()
                  {
                      int n;
                      cin >> n;
                      cout << b(n);
                      return 0;
                  }
                  
                  • 0
                    @ 2023-12-2 17:01:20

                    过辣!

                    #include <iostream>
                    #include <algorithm>
                    #include <cmath>
                    using namespace std;
                    int a[50];//记忆化搜索
                    int b(int n)
                    {
                        if (a[n])return a[n];//如果原本有值(≠0)就直接使用
                        return b(n-1)+b(n-2)+b(n-3);//否则就递归计算前面三项的和
                    }
                    int main()
                    {
                        int n;
                        a[1]=1,a[2]=1,a[3]=1;
                        cin>>n;
                        cout<<b(n);
                        return 0;
                    }
                    

                    别问我为什么写这么多个库,主打的就是功能齐全

                    • 0
                      @ 2023-12-2 15:00:17

                      题解

                      作者创作幸苦不易,不劳而获让老子白费苦心。

                      本题目为标准递归题目,规律是为前三个数字之和为下一个数字

                      例:1 1 1 ?

                      ? = 1+1+1 = 3

                      得出递归条件式为:func(n-1)+func(n-2)+func(n-3)

                      又因为前三个数字(三个1)无法使用递归条件式,所以它们三个将作为结束式:

                      if(n == 1 || n == 2 || n== 3){

                      return 1;

                      }

                      所以整体代码如下:↓

                      #include<bits/stdc++.h> using namespace std; int n; //定义全局变量n int func(int x){ if (x == 1||x == 2||x == 3)//此代码译为if(x1或x2或x==3) { return 1;//函数边界 } return func(x-1)+func(x-2)+func(x-3);//递归 } int main(){ cin >> n;//输入变量 cout << func(n);//调动函数func() return 0; }

                      作者辛苦创作不易有缘人记得点赞

                      • 0
                        @ 2023-11-25 20:07:34

                        分享一种不用递归的方法

                        #include<iostream>
                        using namespace std;
                        int main()
                        {
                            int a[31],n;
                            a[1] = 1,a[2] = 1,a[3] = 1;
                            cin>>n;
                            for(int i = 4 ; i <= n ; i++)
                            {
                                a[i] = a[i-1]+a[i-2]+a[i-3];
                            }
                            cout<<a[n];
                        }
                        

                        很好理解,a[i]是前三项之和,因为避免超界,所以从4开始

                        • 0
                          @ 2023-11-18 15:02:12
                          #include <iostream>
                          using namespace std;
                          int main()
                          {
                              int n,a[40];
                              cin>>n;
                              a[1]=1,a[2]=1,a[3]=1;
                              for(int i=4;i<=n;i++)
                              {
                                  a[i]=a[i-1]+a[i-2]+a[i-3];
                              }
                              cout<<a[n];
                              return 0; 
                          }
                          
                          • 0
                            @ 2023-11-7 19:25:42

                            可参考 勿抄袭

                            int func(int i)
                            {
                                if((i==1)||(i==2)||(i==3))
                                {
                                    return 1;
                                }
                                return func(i-1)+func(i-2)+func(i-3);
                            }
                            
                            • 0
                              @ 2023-10-19 20:26:26

                              这是本人第一篇题解,请大家多多关照! 这题的规律是:a[i] = a[i - 1] + a[i - 2] + a[i - 3] 下面上代码:

                              #include <bits/stdc++.h>
                              using namespace std;
                              int n;
                              int f(int n)
                              {
                                  if (n == 1 || n == 2 || n == 3)
                                  {
                                      return 1;
                                  }
                                  return f(n - 1) + f(n - 2) + f(n - 3);
                              }
                              signed main()
                              {
                                  cin >> n;
                                  cout << f(n);
                                  return 0;
                              }
                              

                              这是递归思想,但有一个问题,比如n = 5时,会执行f(4) + f(3) + f(2),f(4) = f(3) + f(2) + f(1), 一共执行了5次,数据再大的话重复次数更多,可能TLE,所以,我想到了递推。 递推代码:

                              #include <bits/stdc++.h>
                              using namespace std;
                              int n,a[100005];
                              signed main()
                              {
                                  cin >> n;
                                  a[1] = 1;
                                  a[2] = 1;
                                  a[3] = 1;
                                  for (int i = 4;i <= n;i++)
                                  {
                                      a[i] = a[i - 1] + a[i - 2] + a[i - 3];
                                  }
                                  cout << a[n];
                                  return 0;
                              }
                              
                              • @ 2024-2-6 22:25:14

                                志同道合。。。。。。 看看我的代码:

                                #include <iostream>
                                using namespace std;
                                int main()
                                {
                                int a[35],n;
                                cin>>n;
                                a[1]=1;
                                a[2]=1;
                                a[3]=1;
                                for (int i=4;i<=n;i++)
                                {
                                a[i]=a[i-1]+a[i-2]+a[i-3];
                                }
                                cout<<a[n];
                                return 0;
                                }
                                

                                简直是一毛一样

                            • 0
                              @ 2023-10-15 12:15:29
                              #include <bits/stdc++.h>
                              using namespace std;
                              int n,k;
                              int dc(int v){//函数
                                  if(v<=3)return 1;//边界
                                  return dc(v-1)+dc(v-2)+dc(v-3);//是前三数字和,调用三次。
                              }
                              int main(){
                                  cin>>n;
                                  cout<<dc(n);//直接用函数
                              }
                              
                              • 0
                                @ 2023-10-8 20:36:13
                                #include <iostream>
                                using namespace std;
                                int n;
                                int func(int x)
                                {
                                if (x == 1 || x == 2 || x == 3) return 1;
                                return func(x - 3) + func(x - 2) + func(x - 1);
                                }
                                int main()
                                {
                                cin >> n;
                                cout << func(n);
                                }
                                
                                
                                
                                • 0
                                  @ 2023-10-7 21:21:26

                                  规律是从第4个开始,每个等于它前三个相加。

                                  本题有

                                  二大解法

                                  1,递推

                                  #include <bits/stdc++.h>
                                  using namespace std;
                                  int a[35],n;
                                  int main()
                                  {
                                      cin>>n;
                                      a[1]=1;
                                      a[2]=1;
                                      a[3]=1;
                                      for(int i=4;i<=n;i++)
                                      {
                                          a[i]=a[i-1]+a[i-2]+a[i-3];//递推公式
                                      }
                                      cout<<a[n];
                                      return 0;
                                  }
                                  

                                  2,递归

                                  #include <bits/stdc++.h>
                                  using namespace std;
                                  int n;
                                  int f(int x)
                                  {
                                      if(x<=3)
                                      {
                                          return 1;
                                      }
                                      return f(x-1)+f(x-2)+f(x-3);
                                  }
                                  int main()
                                  {
                                      cin>>n;
                                      cout<<f(n);
                                      return 0;
                                  }
                                  

                                  彩蛋方法

                                  打表

                                  打表代码

                                  #include <bits/stdc++.h>
                                  using namespace std;
                                  int n,a[30];//{1,1,1,3,5,9,17,31,57,105,193,355,653,1201,2209,4063,7473,13745,25281,46499,85525,157305,289329,532159,978793,1800281,3311233,6090307,11201821,20603361};
                                  int main()
                                  {
                                      cin>>n;
                                      a[1]=1;
                                      a[2]=1;
                                      a[3]=1;
                                      cout<<1<<","<<1<<","<<1<<",";
                                      for(int i=4;i<=30;i++)
                                      {
                                          a[i]=a[i-1]+a[i-2]+a[i-3];
                                          cout<<a[i]<<",";
                                      }
                                      return 0;
                                  }
                                  

                                  注释就是表。

                                • 0
                                  @ 2023-10-5 20:21:20

                                  C2每课一题解(第一课 第一题)!!!

                                  此题十分十分十分十分十分十分简单,只需用此课的知识——递推就欧了。

                                  我们先梳理一下递归是啥

                                  1.递归是指程序运行时直接或间接调用自身的一种基础算法。

                                  2.递归多见于函数中,递归可以用调用自身将问题拆分,间接解决问题,递归是需要终止条件的,且还要递归公式。

                                  话不多说,上代码!

                                  AC Code

                                  #include<iostream>
                                  using namespace std;
                                  int n;
                                  int func(int i)
                                  {
                                      if(i==1)
                                      {
                                          return 1;
                                      }
                                      else if(i==2)
                                      {
                                          return 1;
                                      }
                                      else if(i==3)
                                      {
                                          return 1;
                                      }
                                      return func(i-1)+func(i-2)+func(i-3);
                                  }
                                  int main()
                                  {
                                      cin >> n;
                                      cout << func(n);
                                  }
                                  
                                  • 0
                                    @ 2023-10-5 18:34:46
                                    #include <iostream>
                                    using namespace std;
                                    int f(int x)
                                    {
                                        if((x==1)||(x==2)||(x==3))
                                        {
                                            return 1;
                                        }
                                        return f(x-1)+f(x-2)+f(x-3);
                                    }
                                    int main()
                                    {
                                        int n;
                                        cin >> n;
                                        cout << f(n);
                                        return 0;
                                    }
                                    
                                    • 0
                                      @ 2023-9-23 20:35:38

                                      #include<iostream> using namespace std; int n; int func(int i) { if(i1) return 1; if(i2) return 1; if(i==3) return 1;

                                      return func(i-1)+func(i-2)+func(i-3);
                                      

                                      } int main() {

                                      cin >> n;
                                      cout << func(n)<<" ";
                                      

                                      }

                                      信息

                                      ID
                                      5
                                      时间
                                      1000ms
                                      内存
                                      256MiB
                                      难度
                                      5
                                      标签
                                      递交数
                                      6686
                                      已通过
                                      2803
                                      上传者