У меня есть следующая рекурсивная функция:реализовать DP для рекурсивной функции
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
.
I Я не уверен, что правильно задаю вопрос, так что вы могли бы уточнить, что именно вы хотите: хотите ли вы избавиться от рекурсии или просто хотите изменить способ хранения данных? – SingerOfTheFall
@SingerOfTheFall Я понимаю рекурсию, но хочу ускорить эту функцию. –
Очевидная оптимизация - использовать кеш, возможно, реализованный как хэш-карта. – Philip