Skip to content

Commit 748d0b6

Browse files
committed
questions using dp
1 parent 8c75f4b commit 748d0b6

File tree

6 files changed

+183
-0
lines changed

6 files changed

+183
-0
lines changed

COINS-h.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <stdio.h>
2+
#include<iostream>
3+
4+
using namespace std;
5+
6+
long long int a[1000010]={0};
7+
8+
long long int max(long long int a,long long int b)
9+
{
10+
if(a>b)
11+
return a;
12+
return b;
13+
}
14+
long long int answer (long long int p)
15+
{
16+
if(p<=1000000)
17+
return a[p];
18+
else
19+
return (answer(p/2)+answer(p/3)+answer(p/4));
20+
}
21+
int main()
22+
{
23+
long long int n;
24+
//answer is always gonna be i for such a case
25+
for(int i=0;i<=11;i++)
26+
a[i]=i;
27+
for(int i=12;i<=1000000;i++)
28+
a[i]=a[i/2]+a[i/4]+a[i/3];
29+
while(cin>>n)
30+
{
31+
printf("%lld\n",answer(n));
32+
}
33+
return 0;
34+
}

EDIST-h.cpp

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#include<stdio.h>
2+
#include<string.h>
3+
using namespace std;
4+
int min(int a,int b)
5+
{
6+
if(a>b)
7+
return b;
8+
else
9+
return a;
10+
}
11+
int main()
12+
{
13+
int t,len1,len2,i,j,m,temp1,temp2;
14+
char str1[2100];
15+
char str2[2100];
16+
static int a[20001][2001];
17+
scanf("%d",&t);
18+
while(t--)
19+
{
20+
scanf("%s",str1);
21+
scanf("%s",str2);
22+
len1=strlen(str1);
23+
len2=strlen(str2);
24+
for(i=0;i<=len1;i++)
25+
a[i][0]=i;
26+
for(i=1;i<=len2;i++)
27+
a[0][i]=i;
28+
for(i=1;i<=len1;i++)
29+
{
30+
for(j=1;j<=len2;j++)
31+
{
32+
m=(str1[i-1]==str2[j-1]) ? 0:1;
33+
temp1=min(a[i-1][j]+1,a[i][j-1]+1);
34+
temp2=a[i-1][j-1]+m;
35+
a[i][j]=min(temp1,temp2);
36+
}
37+
}
38+
printf("%d\n",a[len1][len2]);
39+
}
40+
return 0;
41+
}

KNAPSACK-h.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
int dp[2005][2005];
5+
int main(){
6+
int s,n,size[2010],values[2010];
7+
cin>>s>>n;
8+
for(int i=1;i<=n;i++)
9+
{
10+
cin>>size[i]>>values[i];
11+
}
12+
for(int i=1;i<=n;i++){
13+
for(int j=1;j<=s;j++){
14+
if(j < size[i]){
15+
dp[i][j]=dp[i-1][j];
16+
}
17+
else{
18+
dp[i][j]=max(values[i]+dp[i-1][j-size[i]],dp[i-1][j]);
19+
}
20+
}
21+
}
22+
cout<<dp[n][s];
23+
return 0;
24+
}

MCOINS-h.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
int main(){
5+
int k,l,m;
6+
bool dp[1000010]={};
7+
cin>>k>>l>>m;
8+
dp[1]=true;dp[l]=true;dp[k]=true;
9+
for(int i=2;i<=1000000;i++){
10+
if(i-k>=0 && dp[i-k]==false)
11+
dp[i]=true;
12+
if(i-1>=0 && dp[i-1]==false)
13+
dp[i]=true;
14+
if(i-l>=0 && dp[i-l]==false)
15+
dp[i]=true;
16+
}
17+
while(m--){
18+
int n;
19+
cin>>n;
20+
if(dp[n]==true)
21+
cout<<"A";
22+
else
23+
cout<<"B";
24+
}
25+
return 0;
26+
}

SUMITR-h.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include<iostream>
2+
using namespace std;
3+
int main(){
4+
int t;
5+
cin>>t;
6+
while(t--){
7+
int ans=0,i,n,v[1010][1010],j;
8+
cin>>n;
9+
for(i=0;i<n;i++){
10+
for(j=0;j<i+1;j++)
11+
cin>>v[i][j];
12+
}
13+
for(i=n-2;i>=0;i--){
14+
for(j=0;j<i+1;j++){
15+
v[i][j]+=max(v[i+1][j],v[i+1][j+1]);
16+
}
17+
}
18+
cout<<v[0][0]<<"\n";
19+
}
20+
return 0;
21+
}
22+
23+
/*Submitted code :
24+
#include<iostream>
25+
using namespace std;main(){int t;cin>>t;while(t--){int ans=0,i,n,v[110][110],j;cin>>n;for(i=0;i<n;i++){for(j=0;j<i+1;j++)cin>>v[i][j];}for(i=n-2;i>=0;i--){for(j=0;j<i+1;j++){v[i][j]+=max(v[i+1][j],v[i+1][j+1]);}}cout<<v[0][0]<<"\n";}}
26+
*/

TRT-h.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
int dp[2005][2005]={};
5+
int main(){
6+
int i,j,n,arr[2005];
7+
long long int cumulative[2005]={};
8+
cin>>n;
9+
for(i=1;i<=n;i++)
10+
cin>>arr[i];
11+
for(i=1;i<=n;i++){
12+
dp[i][i]=arr[i];
13+
}
14+
for(i=1;i<=n;i++){
15+
cumulative[i]=arr[i]+cumulative[i-1];
16+
}
17+
for(int range=1;range<=n;range++){
18+
for(int be=1;be+range<=n;be++){
19+
int en=be+range;
20+
int a1=dp[be+1][en] + arr[be] + cumulative[en]-cumulative[be];
21+
int a2=dp[be][en-1] + arr[en] + cumulative[en-1]-cumulative[be-1];
22+
dp[be][en]=max(a1,a2);
23+
}
24+
}
25+
/*for(i=1;i<=n;i++){
26+
for(j=1;j<=n;j++){
27+
cout<<dp[i][j]<<" ";
28+
}
29+
cout<<"\n";
30+
}*/
31+
cout<<dp[1][n];
32+
}

0 commit comments

Comments
 (0)