94 条题解

  • -1
    @ 2024-5-18 18:56:55
    #include <bits/stdc++.h>
    using namespace std;
    int fib(int n)
    {
        if(n == )
        {
            return 1;
        }
        else if(n == )
        {
            return 1;
        }
        else if(n == )
        {
            return 1;
        }
        else
        {
            ********;//用用脑子想兄弟
        }
    }
    int main()
    {
        int n;
        cin >> n;
        cout << "略" << endl;//万能定律——不会就填略(没毛病吧)
        return 0;
    }😄 
    
    • -1
      @ 2024-5-4 19:45:40
      #include<bits/stdc++.h>
      using namespace std;
      int func(int i){
          if(i==1||i==2||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;
      }
      
      • -1
        @ 2024-5-4 19:44:52
        #include<bits/stdc++.h>//老规矩不用多说了吧。
        using namespace std;
        int func(int i){
            if(i==1||i==2||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;
        }
        
        • -1
          @ 2024-4-20 22:16:42
          #include<iostream>
          using namespace std;
          int n;
          long long t[35];
          int main()
          {
              t[1]=1,t[2]=1,t[3]=1;
              for(int i=4;i<35;i++)
              {
                  t[i]=t[i-1]+t[i-2]+t[i-3];
              }
              cin >> n;
              cout << t[n];
              return 0;
          }
          
          • -1
            @ 2024-4-20 16:31:51

            阿勒勒?这个题不是用递推更好理解一点吗(

            • -1
              @ 2024-4-14 11:53:06
              #include<bits/stdc++.h>
              using namespace std;
              int main(){
                  int n,f[35];
                  cin>>n;
                  f[1]=f[2]=f[3]=1;
                  for(int i=4;i<=n;i++)f[i]=f[i-1]+f[i-2]+f[i-3];
                  cout<<f[n];
              	return 0;
              } 
              
              • -1
                @ 2024-4-12 20:12:11

                #题解(来自hetao3336374)***

                🎉️ 🎉️ 🎉️ 请勿抄袭,违者必究 本人写Python的

                思路

                1. 递归公式
                  • 观察数列可得,前第一项+前第二项+前第三项=这一项。
                  • 即为:a[i-1]+a[i-2]+a[i-3]=a[i]
                s = [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]
                n = int(input())
                if n > len(s):
                    for i in range(n):
                        x = 0
                        x = i+i[-1]+i[-2]
                        x.append(s)
                    print(s[x-1])
                else:
                    print(s[n-1])
                
                • -1
                  @ 2024-4-9 22:25:07

                  这道题很简单啦,一个递推就出来了,都不需要函数的,直接数组加递推循环就出来了,话不多说上代码

                  #include <bits/stdc++.h>
                  using namespace std;
                  int n,a[35];
                  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;
                  }
                  
                  • -1
                    @ 2024-4-6 10:57:31
                    #include<iostream>
                    using namespace std;
                    int n;
                    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()
                    {
                        cin >> n;
                        cout << func(n);
                    }
                    
                    
                    • -1
                      @ 2024-4-5 17:09:59

                      hhhhhhh

                      • -1
                        @ 2024-3-26 21:40:35
                        #include <iostream>//我不会告诉你有万能头这东西的
                        using namespace std;
                        int n;
                        int f(int n)
                        {
                            if (n == 1 || n == 2 || n == 3)//如果n等于1或2或3
                            {
                                return 1;//返回1
                            }
                            return f(n - 1) + f(n - 2) + f(n - 3);//递归调用f(n - 1),f(n - 2)和f(n - 3)
                        }
                        int main()
                        {
                            cin >> n;
                            cout << f(n);//调用f(n)
                            return 0;
                        }
                        

                        已AC请放心食用。

                        • -1
                          @ 2024-3-3 21:04:34

                          题解: #include <bits/stdc++.h> 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); }

                          • -1
                            @ 2024-3-3 16:59:52

                            开头文件 int n; int f(int n){ if (n<=3) return 1; //递归边界,n<=3时 f(n)=1。 else return f(n-1)+f(n-2)+f(n-3); //递归公式,将f(n)分解为三个更容易得子问题。 } int main() { cin>>n; cout<<f(n); return 0; }

                            • -1
                              @ 2024-2-25 21:15:52

                              题意概括

                              很简单,输入n并输出数列第n项。

                              方法

                              有很多,递推、记忆化搜索、递归等,由于课程教的是递归思想,所以这里选用递归。

                              思路

                              递归有两个重点:

                              1. 递归公式

                                • 观察数列可得,前第一项+前第二项+前第三项=这一项。
                                • 即为:a[i-1]+a[i-2]+a[i-3]=a[i].
                              2. 递归边界

                                • 显然,当a<=3时,超出边界,所以如果a<=3,那么直接返回1.

                              代码+解析

                              #include <bits/stdc++.h>
                              using namespace std;
                              int n;
                              int f(int n){
                                  if (n<=3)  return 1;
                                  //递归边界,n<=3时,由题得f(n)=1。
                                  else  return f(n-1)+f(n-2)+f(n-3);
                                  //递归公式,将f(n)分解为三个更容易得子问题。
                              }
                              int main()
                              {
                                  cin>>n;
                                  cout<<f(n);
                                  return 0;
                              }
                              
                              • -1
                                @ 2024-2-24 19:48:04

                                仔细看,这个数列除了前三个数都是一,后面的数都是前三个数之和所以可以定义一个函数:

                                int f(int n)//求第几个数
                                {
                                    if (n<=3)//判断是不是前三个数
                                         return 1;//是前三个数就返回1
                                    else
                                        return f(n-1)+f(n-2)+f(n-3);//不是就返回这个数前面的三个数相加的结果
                                }
                                

                                因为n比较小,所以可以不用记忆化搜索优化

                                • -1
                                  @ 2024-2-24 16:19:46

                                  题解(来自hetao56274

                                  请勿抄袭,违者必究

                                  image

                                  • -1
                                    @ 2024-2-24 15:46:19

                                    以AC

                                    #include<bits/stdc++.h>
                                    using namespace std;
                                    int fanc(int i){
                                        return i==1||i==2||i==3?1:fanc(i-1)+fanc(i-2)+fanc(i-3);
                                    }
                                    int n;
                                    int main(){
                                        cin>>n;
                                        cout<<fanc(n);
                                        return 0;
                                    }
                                    
                                    </span>
                                    • -1
                                      @ 2024-2-24 13:30:08
                                      #include<bits/stdc++.h>//万能开头
                                      using namespace std;
                                      int b (int n)(定义函数)
                                      {
                                          if (n == 1)
                                          {
                                              return 1;
                                          }    
                                          if (n == 2)
                                          {
                                              return 1;
                                          }
                                          if (n == 3)
                                          {
                                              return 1;
                                          }
                                          return b(n-1) + b(n-2) + b(n-3);
                                      }
                                      int main ()
                                      {
                                          int n;
                                          cin >> n;
                                          cout << b(n);
                                          return 0;
                                      }
                                      
                                      • -1
                                        @ 2024-2-24 11:29:42

                                        题解: 这玩意太简单了,规律很容易找到的:

                                        #include
                                        using namespace std;
                                        int n;
                                        int err(int i){
                                            if(i==1 || i==2 || i==3){
                                                return 1;
                                            }
                                            return err(i-1)+err(i-2)+err(i-3);
                                        }
                                        int main(){
                                            cin>>n;
                                            cout<<err(n);
                                            return 0;
                                        }
                                        

                                        变量名以及函数名可以随便改,终止条件显而易见:因为规律是一个数前三个数的和,第一项第二项第三项都减不够,那既然第一项第二项第三项都知道并且为一,那就判断项数是不是1或2或3,是的话就返回1,下面的就是把规律套里面去。主函数内就直接cin+cout就可以的了,最好再加个“return 0;”。

                                        • -1
                                          @ 2024-2-3 17:35:44

                                          怎么说呢,就一个很简单的递推(学过了递推,谁还用递归呀😕 )下面是代码两件套:#include <bits/stdc++.h> using namespace std; int n,a[35]; int fibonaqi(int n) { a[1]=a[2]=a[3]=1; for (int i=4;i<=n;i++) { a[i]=a[i-3]+a[i-2]+a[i-1]; } return a[n]; } int main() { cin>>n; cout<<fibonaqi(n); return 0; } //伪代码 初始化 定义 n a[35] 定义函数(名字自己取,别抄我的) { 设a数组初始值 for(从a[4]开始,推到a[n]) { 递推公式自己想 } 返回答案a[n] } int main() { 输入n 调用函数 }

                                          信息

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