Я только начинал заниматься динамическим программированием и пытался решить проблему с факториалом, используя то же самое. Я использовал двоичное дерево для базовой структуры данных, но когда я подумал о сравнении его с обычной рекурсией, решение с помощью рекурсии дало результат быстрее.Я использую Lenovo Ideapad3 с Arch и использую хронограф для расчета времени.
Ниже приведен код
Я только начинал заниматься динамическим программированием и пытался решить проблему с факториалом, используя то же самое. Я использовал двоичное дерево для базовой структуры данных, но когда я подумал о сравнении его с обычной рекурсией, решение с помощью рекурсии дало результат быстрее.Я использую Lenovo Ideapad3 с Arch и использую хронограф для расчета времени. Ниже приведен код [code]#include #include using namespace std; using namespace chrono;
class Fact{ struct Node { unsigned long long data, value; Node* Rptr; Node* Lptr; Node(): data(0), value(0), Rptr(nullptr), Lptr(nullptr) {} Node(int d, int v): data(d), value(v), Rptr(nullptr), Lptr(nullptr) {} }; Node* root; public: Fact(): root(nullptr) {} Node* inTree(Fact::Node* ptr, int data); Node* insertInTree(Fact::Node* ptr, int data, int value); unsigned long long findFact(int num); void deleteTree(Node* root) { if (root == NULL) { return; } deleteTree(root->Lptr); deleteTree(root->Rptr); delete root; }
~Fact() { deleteTree(root); } };
unsigned long long factorial(int n) { return (n < 1) ? 1 : n*factorial(n-1); }
int main() { Fact fact;
//DP solution auto start = high_resolution_clock::now(); auto answer = fact.findFact(20); auto stop = high_resolution_clock::now(); cout