2026华为OD面试题047:信道分配 题目描述算法工程师小明要解决一个信道分配问题,目标是把通信信道分给尽量多的用户。规则是这样的:每条信道都有"阶",阶为 r 的信道容量是2^r比特所有用户要传的数据量都一样,都是D比特一个用户可以分到多条信道,但每条信道只能给一个用户只有当分给某用户的所有信道容量之和= D,这个用户才能传数据给出一组信道资源,最多能为多少个用户传数据?举例:最大阶数R=5,各阶信道数量10 5 0 1 3 2(对应阶 0 到 5),D=30,输出4。讲个故事:小明的带宽生意小明开了个"带宽小店",手里有一堆大小不一的管道:细的能过 1 升,粗的能过 2 升、4 升、8 升,都是翻倍的。来了几拨客户,每人都要凑够 30 升的流量才肯付钱。管道可以拆着用,一根粗管子能顶好几根细的,但每根管子只能卖给一个客户。小明数了数家底:1 升管 10 根、2 升管 5 根、4 升管 0 根、8 升管 1 根、16 升管 3 根、32 升管 2 根。30 = 16 + 8 + 4 + 2。一个客户要一根 16 升、一根 8 升、一根 4 升、一根 2 升。4 升管没有?那就拿 8 升管拆成两根 4 升,自己留一根卖一根。