diff --git a/Algorithms/DynamicProgramming/C++/longest palindromic substring dp approch.cpp b/Algorithms/DynamicProgramming/C++/longest palindromic substring dp approch.cpp new file mode 100644 index 0000000..1e51bba --- /dev/null +++ b/Algorithms/DynamicProgramming/C++/longest palindromic substring dp approch.cpp @@ -0,0 +1,118 @@ +#include +#include +using namespace std; + +//#pragma GCC optimize('O2') +#define ll long long +#define vll vector +#define vi vector +#define tin tuple +#define mll map +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define F first +#define S second +#define mt make_tuple +#define all(x) (x).begin(),(x).end() +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i=z;i--) +#define deb(x) cout<<'DEBUG------> '<> a; +//for (auto me : m) { +//std::vector::iterator it; +//it = std::find (v.begin(), v.end(), ser); +//if (it != v.end()) +# define INF 0x3f3f3f3f +const int MAX = 1e3 + 7; +//////////////////////////////////////////////////////////////////////////////////////////// + +ll power(ll base,ll por) +{ +ll res=1; +while(por>1){ +if(por%2==1) +{ +res*=base; +por--; +} +por/=2; +base*=base; +} +res*=base; +return res; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +int main() +{ +// freopen('a.txt', 'r', stdin); freopen('a_out.txt', 'w', stdout); + + ios::sync_with_stdio(0); + cin.tie(0); + ll t,n; + string bb; + cin>>bb; + ll a,co=0,c=0,d=0,b=0,k; + n=bb.size(); + int aa[n+1][n+1]; + f(i,0,n+1) + { + f(j,0,n+1) + { + if(i==0) + { + aa[i][j]=1; + } + else if(i==1 && j>0) + { + aa[i][j]=1; + } + else if(i==2 && (j0)) + { + if(bb[j-1]==bb[j]) + { + aa[i][j]=1; + } + else + { + aa[i][j]=0; + } + } + else + { + aa[i][j]=0; + } + } + } + int x=-1,y=-1; + f(i,3,n) + { + f(j,i,n+1) + { + if(bb[j-i]==bb[j-1] && aa[i-2][j-1]==1) + { + aa[i][j]=1; + x=i; + y=j; + } + } + } + cout< +#include +using namespace std; + +//#pragma GCC optimize('O2') +#define ll long long +#define vll vector +#define vi vector +#define tin tuple +#define mll map +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define F first +#define S second +#define mt make_tuple +#define all(x) (x).begin(),(x).end() +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i=z;i--) +#define deb(x) cout<<'DEBUG------> '<> a; +//for (auto me : m) { +//std::vector::iterator it; +//it = std::find (v.begin(), v.end(), ser); +//if (it != v.end()) +# define INF 0x3f3f3f3f +const int MAX = 1e3 + 7; +//////////////////////////////////////////////////////////////////////////////////////////// + +ll power(ll base,ll por) +{ +ll res=1; +while(por>1){ +if(por%2==1) +{ +res*=base; +por--; +} +por/=2; +base*=base; +} +res*=base; +return res; +} +int nCrModp(int n,int r,int p) +{ + if(r>n-r) + r=n-r; + int c[r+1]; + memset(c,0,sizeof(c)); + c[0]=1; + for(int i=1;i=1;j--) + { + c[j]=(c[j]+c[j-1])%p; + } + } + return c[r]; +} + +///////////////////////////////////////////////////////////////////////////////////////// +int main() +{ +// freopen('a.txt', 'r', stdin); freopen('a_out.txt', 'w', stdout); + + ios::sync_with_stdio(0); + cin.tie(0); + ll t,n; + ll a,co=0,c=0,d=0,b=0,k; + cin>>t>>n>>a; + cout< +#include +using namespace std; + +//#pragma GCC optimize('O2') +#define ll long long +#define vll vector +#define vi vector +#define tin tuple +#define mll map +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define F first +#define S second +#define mt make_tuple +#define all(x) (x).begin(),(x).end() +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i=z;i--) +#define deb(x) cout<<'DEBUG------> '<> a; +//for (auto me : m) { +//std::vector::iterator it; +//it = std::find (v.begin(), v.end(), ser); +//if (it != v.end()) +# define INF 0x3f3f3f3f +const int MAX = 1e3 + 7; +//////////////////////////////////////////////////////////////////////////////////////////// + +ll power(ll base,ll por) +{ +ll res=1; +while(por>1){ +if(por%2==1) +{ +res*=base; +por--; +} +por/=2; +base*=base; +} +res*=base; +return res; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +int main() +{ +// freopen('a.txt', 'r', stdin); freopen('a_out.txt', 'w', stdout); + + ios::sync_with_stdio(0); + cin.tie(0); + ll t,n; + cin>>n; + ll a,co=0,c=0,d=0,b=0,k; + vector v(n+1,0); + v[1]=1; + v[2]=1; + f(i,3,n+1) + { + v[i]=v[i-1]+v[i-2]; + } + cout< +#include +using namespace std; + +//#pragma GCC optimize('O2') +#define ll long long +#define vll vector +#define vi vector +#define tin tuple +#define mll map +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define F first +#define S second +#define mt make_tuple +#define all(x) (x).begin(),(x).end() +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i=z;i--) +#define deb(x) cout<<'DEBUG------> '<> a; +//for (auto me : m) { +//std::vector::iterator it; +//it = std::find (v.begin(), v.end(), ser); +//if (it != v.end()) +# define INF 0x3f3f3f3f +const int MAX = 1e3 + 7; +//////////////////////////////////////////////////////////////////////////////////////////// + +ll power(ll base,ll por) +{ +ll res=1; +while(por>1){ +if(por%2==1) +{ +res*=base; +por--; +} +por/=2; +base*=base; +} +res*=base; +return res; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +int main() +{ +// freopen('a.txt', 'r', stdin); freopen('a_out.txt', 'w', stdout); + + ios::sync_with_stdio(0); + cin.tie(0); + int t,n; + cin>>t>>n; + int a,co=0,c=0,d=0,b=0,k,te; + vector v(t); + f(i,0,t) + { + cin>>v[i]; + } + bool aa[n+1]; + + f(j,0,n+1) + { + aa[j]=0; + } + + aa[0]=1; + f(i,0,t) + { + te=v[i]; + f(j,te,n+1) + { + if(te==j)aa[j]=1; + else if(aa[j-te]==1)aa[j]=1; + } + } + if(aa[n]==1) + { + cout<<"Yes"; + } + else + { + cout<<"No"; + } + + return 0; +} diff --git a/CSES/Grid path number of way to reach from point a to point b.cpp b/CSES/Grid path number of way to reach from point a to point b.cpp new file mode 100644 index 0000000..eda59ae --- /dev/null +++ b/CSES/Grid path number of way to reach from point a to point b.cpp @@ -0,0 +1,115 @@ +// Start from destination then add number of way while moving left or right +#include +#include +using namespace std; + +//#pragma GCC optimize('O2') +#define ll long long +#define vll vector +#define vi vector +#define tin tuple +#define mll map +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define F first +#define S second +#define mt make_tuple +#define all(x) (x).begin(),(x).end() +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i=z;i--) +#define deb(x) cout<<'DEBUG------> '<> a; +//for (auto me : m) { +//std::vector::iterator it; +//it = std::find (v.begin(), v.end(), ser); +//if (it != v.end()) +# define INF 0x3f3f3f3f +//////////////////////////////////////////////////////////////////////////////////////////// + +ll power(ll base,ll por) +{ +ll res=1; +while(por>1){ +if(por%2==1) +{ +res*=base; +por--; +} +por/=2; +base*=base; +} +res*=base; +return res; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +int main() +{ +// freopen('a.txt', 'r', stdin); freopen('a_out.txt', 'w', stdout); + + ios::sync_with_stdio(0); + cin.tie(0); + ll t,n; + cin>>t; + vector v(t); + ll aa[t][t]; + ll a,co=0,c=0,d=0,b=0,k,x=0,y=0; + f(i,0,t) + { + cin>>v[i]; + } + f(i,0,t) + { + f(j,0,t) + { + aa[i][j]=0; + } + } + + aa[0][0]=1; + f(i,0,t) + { + f(j,0,t) + { + if(v[i][j]=='.'){ + if(i>0) + { + if(v[i-1][j]=='.') + { + aa[i][j]=((aa[i][j]%mod)+(aa[i-1][j]%mod))%mod; + } + } + if(j>0) + { + if(v[i][j-1]=='.') + { + aa[i][j]=((aa[i][j]%mod)+(aa[i][j-1]%mod))%mod; + } + } + } + } + } + if(t==1 && v[0][0]=='*') + { + cout<<"0\n"; + } + else + { + cout< +#include +using namespace std; +#define ll long long +#define all(x) (x).begin(),(x).end() +#define vll vector +#define vl vector +#define pi pair +#define vp vector +#define pb push_back +#define mp make_pair +#define fi first +#define se second +#define rall(x) x.rbegin(), x.rend() +#define watch(x) cout << (#x) << ' is ' << (x) << endl +#define f(i,x,z) for(ll i=x;i '< +#define mod 1000000007 +class node{ + public: + int data; + node* next; + node(int val){ + data=val; + next=NULL; + } +}; +void makeCycle(node* &head, int pos){ + node* temp=head; + node* startNode; + int count=1; + while(temp->next!=NULL){ + if(count==pos){ + startNode=temp; + } + temp=temp->next; + count++; + } + temp->next=startNode; +} +bool detectCycle(node* &head){ + node* slow=head; + node* fast=head; + while(fast!=NULL && fast->next!=NULL){ + slow=slow->next; + fast=fast->next->next; + if(fast=slow){ + return true; + } + } + return false; +} +void removeCycle(node* &head){ + node* slow=head; + node* fast=head; + do + { + slow=slow->next; + fast=fast->next->next; + } while (slow!=fast); + + fast=head; + while(slow->next!=fast->next){ + slow=slow->next; + fast=fast->next; + } + slow->next=NULL; +} +void insertAtTail(node* &head, int val) +{ + node* n = new node(val); + if(head==NULL) + { + head=n; + return; + } + node* temp=head; + while(temp->next!=NULL){ + temp=temp->next; + } + temp->next=n; +} +void display(node* head) +{ + node* temp=head; + while(temp!=NULL){ + cout<data<<" "; + temp=temp->next; + } + cout<Readme Credit goes to @Saumya