可以在不知道最终大小的情况下创建最小/最大堆?

问题描述 投票:1回答:1

我正在尝试编写一个程序,它将检查简单游戏的状态空间。

这个程序将使用启发式函数,我想通过该启发式函数的给定值来命令min-heap中生成的状态。

但它应该是多大的堆?可以生成的最大状态数是9!,我认为这是非常多的。如果我不想一次分配那么大的内存空间,如何管理呢?

我在C编码。任何想法?

c size heap heap-memory
1个回答
0
投票

假设您需要为每个状态存储一个整数值。总大小= 9! * sizeof int(4byte)= 1.384MB。它不是很多!此外,如果没有内部循环来计算状态,那么时间复杂度应该是O(10 ^ 6)并且应该花费几毫秒来计算。

是的。你可以在不知道最终大小的情况下创建堆。只需使用链表和动态内存分配。

© www.soinside.com 2019 - 2024. All rights reserved.