Pages - Menu

Saturday, 28 March 2020

Staircase Problem DP Based Solution

HERE IS THE CODE

Bottom Up Approach -
//Bottom Up approach

#include<stdio.h>
int solution[1000];
int min(int a,int b)
{
    if(a<b)
        return a;
    else
        return b;
}

int find_minm_stairs(int n)
{
    int i;
    for(i=1;i<=n;i++)
    {
        if(i-1>=0)
            solution[i]=solution[i-1]+1;
        if(i-2>=0)
            solution[i]=min(solution[i],solution[i-2]+1);
        if(i-3>=0)
            solution[i]=min(solution[i],solution[i-3]+1);
    }
    return solution[n];
}

void main()
{
    int total_stairs,minm;
    printf("Enter the total number of stairs\n");
    scanf("%d",&total_stairs);
    solution[0]=0;
    minm=find_minm_stairs(total_stairs);
    printf("The minimum number of steps required are %d",
minm);
}


Top Down Approach -
//Top down approach

#include<stdio.h>
int solution[1000];
int min(int a,int b)
{
    if(a<b)
        return a;
    else
        return b;
}

int find_minm_stairs(int n)
{
    if(solution[n]==-1)
    {
        if(n-1>=0)
            solution[n]=find_minm_stairs(n-1)+1;
        if(n-2>=0)
            solution[n]=min(solution[n],
find_minm_stairs(n-2)+1);
        if(n-3>=0)
            solution[n]=min(solution[n],
find_minm_stairs(n-3)+1);
    }
    return solution[n];
}

void main()
{
    int total_stairs,minm,i;
    printf("Enter the total number of stairs\n");
    scanf("%d",&total_stairs);
    solution[0]=0;
    for(i=1;i<=1000;i++)
        solution[i]=-1;
    minm=find_minm_stairs(total_stairs);
    printf("The minimum number of steps required are %d",minm);
}

No comments:

Post a Comment