ALGO-9 摆动序列
ALGO-9 摆动序列
题目
资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
如果一个序列满足下面的性质,我们就将它称为摆动序列:
- 序列中的所有数都是不大于 k 的正整数;
- 序列中至少有两个数。
- 序列中的数两两不相等;
- 如果第 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);
}
}