华为OD机考2025B卷 - 构建数列 (Java & Python& JS & C++ & C )

最新华为OD机试

真题目录:点击查看目录
华为OD面试真题精选:点击立即查看

2025华为od 机试2025B卷-华为机考OD2025年B卷

题目描述

构造数列,第一个数为n,后面的数不大于前一个的一半,数列奇偶相间或许全为奇数或者全为偶数,数列的元素都是正整数,能构造多少数列。

输入描述

输入一个n

备注

  • 1 <= n < 10000

输出描述

输出可以构造的序列个数

示例1

输入

7

输出

6

说明

可以构成 [7], [7,3], [7,2], [7, 1], [7,3,1],[7,2,1]

示例2

输入

4

输出

3

说明

可以构成 [4],[4,2],[4,1]

解题思路

题目理解

这是一个动态规划问题,目标是计算满足特定条件的递增序列数量。从代码分析,题目要求:

  1. 序列必须以数字 n 结尾
  2. 序列是严格递增的
  3. 相邻元素需要满足:后一个元素 > 前一个元素的2倍(即 a[i+1] > 2 * a[i]

核心思路

1. 状态分类

代码将所有可能的序列分为4类:

  • 纯奇数序列:所有元素都是奇数
  • 纯偶数序列:所有元素都是偶数
  • 交替序列(末尾奇数):相邻元素奇偶性交替,最后一个是奇数
  • 交替序列(末尾偶数):相邻元素奇偶性交替,最后一个是偶数

2. 动态规划状态定义

  • odd[i]:以位置i结尾的纯奇数序列数量
  • even[i]:以位置i结尾的纯偶数序列数量
  • altOdd[i]:以位置i结尾且最后是奇数的交替序列数

你可能感兴趣的:(最新华为OD机试真题,华为OD机试真题,(Java/JS/Py/C),华为od,java,python,javascript,华为OD机考2025B卷,c++)