gpt4 book ai didi

c++ - 为递归函数实现DP

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:41 24 4
gpt4 key购买 nike

我有以下递归函数:

typedef unsigned long long ull;

ull calc(ull b, ull e)
{
if (!b) return e;
if (!e) return b;
return calc(b - 1, e - 1) + calc(b - 1, e) - calc(b, e - 1);
}

我想用动态规划(即使用存储)来实现它。我试过使用 map<pair<ull, ull>, ull>但它也太慢了。我无法使用数组实现它 O(1)也是。

我想找到一个解决方案,让这个函数快速解决大 b, e

最佳答案

制作一个表格 b/e 并逐个单元格地填充它。这是具有空间和时间复杂度 O(MaxB*MaxE) 的 DP。

Ante 在评论中提出的建议可能会降低空间复杂性 - 仅存储两个需要的行或列。

0 1 2 3 4 5
1 0 3 . . .
2 . . . . .
3 . . . . .
4 . . . . .

关于c++ - 为递归函数实现DP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11306098/

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