gpt4 book ai didi

c++ - 按递增顺序枚举代数表达式

转载 作者:行者123 更新时间:2023-11-28 07:24:30 27 4
gpt4 key购买 nike

我有以下表达式:(2^i * 3^j), i,j >=0 我需要按递增顺序枚举它,即 1 2 3 4 6 8 9 12 ....

我正在考虑执行以下操作:维护优先级队列。对于当前 (i,j),我们可以增加 i 或增加 j。计算这些新值的表达式并将它们插入优先级队列。从队列中弹出并继续。我们从 (0,0) 开始。我们还需要与计算表达式一起维护 (i,j)。此外,需要忽略重复项。

我想知道是否有一种通过维护较少状态来枚举上述表达式的更快方法?

最佳答案

类似的东西。

 results = [1]
i_index = 0
j_index = 0
for(count=0, count<n, count ++){
i_incr = results[i_index]*2 // next value of expression by incrementing i
j_incr = results[j_index]*3 // next value of expression by incrementing j
if (i_incr > j_incr)
results << j_incr
j_index += 1
else if (i_incr < j_incr)
results << i_incr
i_index += 1
else
results << i_incr
i_index += 1
j_index += 1
end
}

状态由 i_indexj_index 维护,它们分别跟踪那些索引未递增的最后一个值。 .

关于c++ - 按递增顺序枚举代数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com