ALGO-9 摆动序列

ALGO-9 摆动序列

题目

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

如果一个序列满足下面的性质,我们就将它称为摆动序列:

  1. 序列中的所有数都是不大于 k 的正整数;
  2. 序列中至少有两个数。
  3. 序列中的数两两不相等;
  4. 如果第 i – 1 个数比第 i – 2 个数大,则第 i 个数比第 i – 2 个数小;如果第 i – 1 个数比第 i – 2 个数小,则第 i 个数比第 i – 2 个数大。

比如,当 k = 3 时,有下面几个这样的序列:

1 2
1 3
2 1
2 1 3
2 3
2 3 1
3 1
3 2

一共有 8 种,给定 k,请求出满足上面要求的序列的个数。

输入格式

输入包含了一个整数 k。(k<=20)

输出格式

输出一个整数,表示满足要求的序列个数。

样例输入

3

样例输出

8

题解

import java.util.Scanner;

/*
NOTE: 动态规划
横是位数值,列是k值,
每一个单元格是 2*C^2_n
就会得到一个下三角阵
每一行求和就是该k值的res
NOTE: 找规律
进一步可以得到一个通解公式: 2*(2^k-k-1)
*/

public class ALGO_9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        sc.close();
        System.out.println((int) (Math.pow(2, k) - k - 1) * 2);
    }
}
posted @ 2022-03-18 13:36  morning-start  阅读(23)  评论(0编辑  收藏  举报