首页 > 试题广场 >

牛牛学数列6

[编程题]牛牛学数列6
  • 热度指数:18244 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}定义数列 \{A_n\} 如下:

\displaystyle A_n=<br />\begin{cases}<br />0,& n\in\{1\};\\<br />1,& n\in\{2,3\};\\<br />\displaystyle A_n = A_{n-3} + 2A_{n-2} + A_{n-1},& n \geqq 4.<br />\end{cases}

\hspace{15pt}给定正整数 n,求 A_n 的值。

输入描述:
\hspace{15pt}在一行中输入一个整数 n,满足 1 \leqq n \leqq 20


输出描述:
\hspace{15pt}输出一个整数,表示 A_n 的值。
示例1

输入

4

输出

3

说明

A_4 = A_1 + 2A_2 + A_3 = 0 + 2\times1 + 1 = 3
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(A(n));
    }
    public static int A(int m){
        if(m==1){
            return 0;
        }
        else if(m==2||m==3){
            return 1;
        }
        else{
            return A(m-3)+2*A(m-2)+A(m-1);}
    }
}

发表于 2025-11-11 12:45:36 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        //使用Scanner录入一个整数n
        Scanner sc=new Scanner(System.in);
        int n = sc.nextInt();
        //求整数An的值
        int An=0;
        int A1=0;
        int A2=1;
        int A3=1;
        if(n==1){
            An=A1;
        }
        if(n==2||n==3){
            An=A2;
            An=A3;
        }
        for(int i=4;i<=n;i++){
            An=A1+2*A2+A3;
            A1=A2;
            A2=A3;
            A3=An;
        }
        System.out.println(An);
    }
}
发表于 2025-11-01 15:49:04 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            // int b = in.nextInt();
            int[] A = new int[n];
            A[0] = 0;
            A[1] = 1;
            A[2] = 1;
            for(int i = 3;i<A.length;i++){
                A[i] = A[i-3]+A[i-2]*2+A[i-1];
            }
            System.out.println(A[n-1]);
        }
    }
}
发表于 2025-10-27 15:52:19 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = 0;
        int a1= 0;
        int a2= 1;
        int a3= 1;
        
            if (a==2|a==3){
                b=1;
            }
            for (int i=4;i<=a;i++){
            if (a>=4){
               b = a1+2*a2+a3;
               a1=a2;
               a2=a3;
               a3=b;
            }
        }
        System.out.println(b);
    }
}

发表于 2025-10-17 11:57:11 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n = in.nextInt();
        int[] a = new int[100];
        a[0]=0;
        a[1]=a[2]=1;
        for(int i=3;i<n;i++){
            a[i]=a[i-3]+2*a[i-2]+a[i-1];
        }

        System.out.println(a[n-1]);

    }
}
发表于 2025-09-13 16:05:49 回复(0)