From d848a9c02c2449087bd3b7a7ac83604528085e56 Mon Sep 17 00:00:00 2001 From: Rajshekar723 <82643732+Rajshekar723@users.noreply.github.com> Date: Tue, 4 Oct 2022 19:41:14 +0530 Subject: [PATCH 1/2] Add files via upload knapsack problem using advanced recursion --- advance_recursion.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 advance_recursion.cpp diff --git a/advance_recursion.cpp b/advance_recursion.cpp new file mode 100644 index 0000000..632e5a1 --- /dev/null +++ b/advance_recursion.cpp @@ -0,0 +1,25 @@ + + + +#include +using namespace std; + +int knapsack(int value[],int wt[],int n,int w) +{ + if(n==0 || w==0){ + return 0; + } + if(wt[n-1]>w){ + return knapsack(value,wt,n-1,w); + } + return max(knapsack(value,wt,n-1,w-wt[n-1])+value[n-1], knapsack(value,wt,n-1,w)); +} + +int main() +{ + int value[]={100,50,150}; + int wt[]={10,20,30}; + int w = 50; + cout< Date: Tue, 4 Oct 2022 19:58:38 +0530 Subject: [PATCH 2/2] Add files via upload finding the middle element of a stack pushed by the user --- find m in stack.cpp | 118 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 find m in stack.cpp diff --git a/find m in stack.cpp b/find m in stack.cpp new file mode 100644 index 0000000..af1f6d0 --- /dev/null +++ b/find m in stack.cpp @@ -0,0 +1,118 @@ + +/* C++ Program to implement a stack +that supports findMiddle() and +deleteMiddle in O(1) time */ +#include +using namespace std; + +class myStack { + struct Node { + int num; + Node* next; + Node* prev; + + Node(int num) { this->num = num; } + }; + + // Members of stack + Node* head = NULL; + Node* mid = NULL; + int size = 0; + +public: + void push(int data) + { + Node* temp = new Node(data); + if (size == 0) { + head = temp; + mid = temp; + size++; + return; + } + + head->next = temp; + temp->prev = head; + + // update the pointers + head = head->next; + if (size % 2 == 1) { + mid = mid->next; + } + size++; + } + + int pop() + { + int data=-1; + if (size != 0) { + data=head->num; + if (size == 1) { + head = NULL; + mid = NULL; + } + else { + head = head->prev; + head->next = NULL; + if (size % 2 == 0) { + mid = mid->prev; + } + } + size--; + } + return data; + } + + int findMiddle() + { + if (size == 0) { + return -1; + } + return mid->num; + } + + void deleteMiddle() + { + if (size != 0) { + if (size == 1) { + head = NULL; + mid = NULL; + } + else if (size == 2) { + head = head->prev; + mid = mid->prev; + head->next = NULL; + } + else { + mid->next->prev = mid->prev; + mid->prev->next = mid->next; + if (size % 2 == 0) { + mid = mid->prev; + } + else { + mid = mid->next; + } + } + size--; + } + } +}; + +int main() +{ + myStack st; + st.push(11); + st.push(22); + st.push(33); + st.push(44); + st.push(55); + st.push(66); + st.push(77); + st.push(88); + st.push(99); + cout <<"Popped : "<< st.pop() << endl; + cout <<"Popped : "<< st.pop() << endl; + cout <<"Middle Element : "<< st.findMiddle() << endl; + st.deleteMiddle(); + cout <<"New Middle Element : "<< st.findMiddle() << endl; + return 0; +}