解题思路:观察摆动数列
实际上就是将一个有序数列从中位数分成两半,将中位数左侧数字从大到小一次插入右侧数字间隔。(或者相反)
所以随便从1,...,k中选择[2,k]个数字都能组成两种摆动序列。问题的解为组合问题:从k挑[2,k]个数字,每种组合都能组成两种波动序列。
即2^k - k - 1 (去掉选择0个或1个数字的组合数)
参考代码:
#include<stdio.h> int main() { int k; scanf("%d",&k); int res = ((1<<k)-k-1)*2; printf("%d\n",res); return 0; }
0.0分
4 人评分
C二级辅导-统计字符 (C语言代码)浏览:506 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:822 |
【出圈】 (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:543 |
【出圈】 (C语言代码)浏览:796 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:561 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1607 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:543 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:712 |
1908题解浏览:640 |