Practical - 8: Aim: Implementation of Making A Change Problem Using Dynamic Programming
Practical - 8: Aim: Implementation of Making A Change Problem Using Dynamic Programming
Practical - 8
Aim: Implementation of making a change problem using dynamic programming.
Code :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n, i, j;
printf("Enter the amount of which you want change\n");
scanf("%d", &m);
printf("\nEnter the number of determinants\n");
scanf("%d", &n);
int c[n + 1][m + 1], dc[n + 1];
printf("\nEnter the determinants\n");
dc[0] = 0;
for (i = 1; i < n + 1; i++)
scanf("%d", &dc[i]);
for (i = 0; i < n + 1; i++)
{
for (j = 0; j <= m; j++)
c[i][j] = 0;
}
for (i = 0; i < n + 1; i++)
c[i][0] = 0;
for (i = 0; i < m + 1; i++)
{
c[0][i] = i;
24
IU2241231336 DAA[CE0516] CSE 5 E-2
}
for (i = 1; i < n + 1; i++)
{
for (j = 1; j < m + 1; j++)
{
if (dc[1] > c[0][j])
c[i][j] = 0;
else if (dc[i] <= j)
{
if ((c[i][j - dc[i]] + 1) < c[i - 1][j])
c[i][j] = (c[i][j - dc[i]] + 1);
else
c[i][j] = c[i - 1][j];
}
else
c[i][j] = c[i - 1][j];
}
}
printf("\n");
for (i = 0; i < n + 1; i++)
{
printf("%d ", dc[i]);
for (j = 0; j < m + 1; j++)
{
printf(" %d", c[i][j]);
}
printf("\n");
}
25
IU2241231336 DAA[CE0516] CSE 5 E-2
26
IU2241231336 DAA[CE0516] CSE 5 E-2
Practical - 10
Aim: Implement LCS Problem.
Code :
def lcs_algo(S1, S2, m, n):
L = [[0 for x in range(n+1)] for x in range(m+1)]
for i in range(m+1):
for j in range(n+1):
if i == 0 or j == 0:
L[i][j] = 0
elif S1[i-1] == S2[j-1]:
L[i][j] = L[i-1][j-1] + 1
else:
L[i][j] = max(L[i-1][j], L[i][j-1])
index = L[m][n]
27
IU2241231336 DAA[CE0516] CSE 5 E-2
S1=input(("Enter Dict"))
S2=input(("Enter Dict"))
m = len(S1)
n = len(S2)
lcs_algo(S1, S2, m, n)
OUTPUT:
28