Skip to main content

Climbing stairs using dynamic programming

Here given code implementation process.

// C Program
// Climbing stairs using dynamic programming
#include <stdio.h>

void possibleMove(int s, int jump)
{
	if (s <= 0 || jump <= 0)
	{
		return;
	}
	int dp[s + 1];
	// initial moves
	dp[0] = 1;
	dp[1] = 1;
	for (int i = 2; i <= s; ++i)
	{
		dp[i] = 0;
		for (int j = 1; j <= jump && j <= i; ++j)
		{
			// Update value
			dp[i] = dp[i] + dp[i - j];
		}
	}
	printf("\n Stairs : %d, Jumps : %d", s, jump);
	printf("\n Result : %d", dp[s]);
}
int main()
{
	int s = 5;
	int jump = 2;
	// Test
	possibleMove(s, jump);
	return 0;
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
/*
    Java Program for
    Climbing stairs using dynamic programming
*/
public class Climbing
{
	public void possibleMove(int s, int jump)
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		int[] dp = new int[s + 1];
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		for (int i = 2; i <= s; ++i)
		{
			dp[i] = 0;
			for (int j = 1; j <= jump && j <= i; ++j)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
			}
		}
		System.out.print("\n Stairs : " + s + ", Jumps : " + jump);
		System.out.print("\n Result : " + dp[s]);
	}
	public static void main(String[] args)
	{
		Climbing task = new Climbing();
		int s = 5;
		int jump = 2;
		// Test
		task.possibleMove(s, jump);
	}
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
// Include header file
#include <iostream>

using namespace std;
/*
    C++ Program for
    Climbing stairs using dynamic programming
*/
class Climbing
{
	public: void possibleMove(int s, int jump)
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		int *dp = new int[s + 1];
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		for (int i = 2; i <= s; ++i)
		{
			dp[i] = 0;
			for (int j = 1; j <= jump && j <= i; ++j)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
			}
		}
		cout << "\n Stairs : " << s << ", Jumps : " << jump;
		cout << "\n Result : " << dp[s];
	}
};
int main()
{
	Climbing *task = new Climbing();
	int s = 5;
	int jump = 2;
	// Test
	task->possibleMove(s, jump);
	return 0;
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
// Include namespace system
using System;
/*
    Csharp Program for
    Climbing stairs using dynamic programming
*/
public class Climbing
{
	public void possibleMove(int s, int jump)
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		int[] dp = new int[s + 1];
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		for (int i = 2; i <= s; ++i)
		{
			dp[i] = 0;
			for (int j = 1; j <= jump && j <= i; ++j)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
			}
		}
		Console.Write("\n Stairs : " + s + ", Jumps : " + jump);
		Console.Write("\n Result : " + dp[s]);
	}
	public static void Main(String[] args)
	{
		Climbing task = new Climbing();
		int s = 5;
		int jump = 2;
		// Test
		task.possibleMove(s, jump);
	}
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
package main
import "fmt"
/*
    Go Program for
    Climbing stairs using dynamic programming
*/

func possibleMove(s, jump int) {
	if s <= 0 || jump <= 0 {
		return
	}
	var dp = make([] int, s + 1)
	// initial moves
	dp[0] = 1
	dp[1] = 1
	for i := 2 ; i <= s ; i++ {
		dp[i] = 0
		for j := 1 ; j <= jump && j <= i ; j++ {
			// Update value
			dp[i] = dp[i] + dp[i - j]
		}
	}
	fmt.Print("\n Stairs : ", s, ", Jumps : ", jump)
	fmt.Print("\n Result : ", dp[s])
}
func main() {
	var s int = 5
	var jump int = 2
	// Test
	possibleMove(s, jump)
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
<?php
/*
    Php Program for
    Climbing stairs using dynamic programming
*/
class Climbing
{
	public	function possibleMove($s, $jump)
	{
		if ($s <= 0 || $jump <= 0)
		{
			return;
		}
		$dp = array_fill(0, $s + 1, 0);
		// initial moves
		$dp[0] = 1;
		$dp[1] = 1;
		for ($i = 2; $i <= $s; ++$i)
		{
			for ($j = 1; $j <= $jump && $j <= $i; ++$j)
			{
				// Update value
				$dp[$i] = $dp[$i] + $dp[$i - $j];
			}
		}
		echo("\n Stairs : ".$s.", Jumps : ".$jump);
		echo("\n Result : ".$dp[$s]);
	}
}

function main()
{
	$task = new Climbing();
	$s = 5;
	$jump = 2;
	// Test
	$task->possibleMove($s, $jump);
}
main();

Output

 Stairs : 5, Jumps : 2
 Result : 8
/*
    Node JS Program for
    Climbing stairs using dynamic programming
*/
class Climbing
{
	possibleMove(s, jump)
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		var dp = Array(s + 1).fill(0);
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		for (var i = 2; i <= s; ++i)
		{
			for (var j = 1; j <= jump && j <= i; ++j)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
			}
		}
		process.stdout.write("\n Stairs : " + s + ", Jumps : " + jump);
		process.stdout.write("\n Result : " + dp[s]);
	}
}

function main()
{
	var task = new Climbing();
	var s = 5;
	var jump = 2;
	// Test
	task.possibleMove(s, jump);
}
main();

Output

 Stairs : 5, Jumps : 2
 Result : 8
#    Python 3 Program for
#    Climbing stairs using dynamic programming
class Climbing :
	def possibleMove(self, s, jump) :
		if (s <= 0 or jump <= 0) :
			return
		
		dp = [0] * (s + 1)
		#  initial moves
		dp[0] = 1
		dp[1] = 1
		i = 2
		while (i <= s) :
			j = 1
			while (j <= jump and j <= i) :
				#  Update value
				dp[i] = dp[i] + dp[i - j]
				j += 1
			
			i += 1
		
		print("\n Stairs : ", s ,", Jumps : ", jump, end = "")
		print("\n Result : ", dp[s], end = "")
	

def main() :
	task = Climbing()
	s = 5
	jump = 2
	#  Test
	task.possibleMove(s, jump)

if __name__ == "__main__": main()

Output

 Stairs :  5 , Jumps :  2
 Result :  8
#    Ruby Program for
#    Climbing stairs using dynamic programming
class Climbing 
	def possibleMove(s, jump) 
		if (s <= 0 || jump <= 0) 
			return
		end

		dp = Array.new(s + 1) {0}
		#  initial moves
		dp[0] = 1
		dp[1] = 1
		i = 2
		while (i <= s) 
			j = 1
			while (j <= jump && j <= i) 
				#  Update value
				dp[i] = dp[i] + dp[i - j]
				j += 1
			end

			i += 1
		end

		print("\n Stairs : ", s ,", Jumps : ", jump)
		print("\n Result : ", dp[s])
	end

end

def main() 
	task = Climbing.new()
	s = 5
	jump = 2
	#  Test
	task.possibleMove(s, jump)
end

main()

Output

 Stairs : 5, Jumps : 2
 Result : 8
/*
    Scala Program for
    Climbing stairs using dynamic programming
*/
class Climbing()
{
	def possibleMove(s: Int, jump: Int): Unit = {
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		var dp: Array[Int] = Array.fill[Int](s + 1)(0);
		// initial moves
		dp(0) = 1;
		dp(1) = 1;
		var i: Int = 2;
		while (i <= s)
		{
			var j: Int = 1;
			while (j <= jump && j <= i)
			{
				// Update value
				dp(i) = dp(i) + dp(i - j);
				j += 1;
			}
			i += 1;
		}
		print("\n Stairs : " + s + ", Jumps : " + jump);
		print("\n Result : " + dp(s));
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: Climbing = new Climbing();
		var s: Int = 5;
		var jump: Int = 2;
		// Test
		task.possibleMove(s, jump);
	}
}

Output

 Stairs : 5, Jumps : 2
 Result : 8
/*
    Swift 4 Program for
    Climbing stairs using dynamic programming
*/
class Climbing
{
	func possibleMove(_ s: Int, _ jump: Int)
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		var dp: [Int] = Array(repeating: 0, count: s + 1);
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		var i: Int = 2;
		while (i <= s)
		{
			var j: Int = 1;
			while (j <= jump && j <= i)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
				j += 1;
			}
			i += 1;
		}
		print("\n Stairs : ", s ,", Jumps : ", jump, terminator: "");
		print("\n Result : ", dp[s], terminator: "");
	}
}
func main()
{
	let task: Climbing = Climbing();
	let s: Int = 5;
	let jump: Int = 2;
	// Test
	task.possibleMove(s, jump);
}
main();

Output

 Stairs :  5 , Jumps :  2
 Result :  8
/*
    Kotlin Program for
    Climbing stairs using dynamic programming
*/
class Climbing
{
	fun possibleMove(s: Int, jump: Int): Unit
	{
		if (s <= 0 || jump <= 0)
		{
			return;
		}
		var dp: Array < Int > = Array(s + 1)
		{
			0
		};
		// initial moves
		dp[0] = 1;
		dp[1] = 1;
		var i: Int = 2;
		while (i <= s)
		{
			var j: Int = 1;
			while (j <= jump && j <= i)
			{
				// Update value
				dp[i] = dp[i] + dp[i - j];
				j += 1;
			}
			i += 1;
		}
		print("\n Stairs : " + s + ", Jumps : " + jump);
		print("\n Result : " + dp[s]);
	}
}
fun main(args: Array < String > ): Unit
{
	val task: Climbing = Climbing();
	val s: Int = 5;
	val jump: Int = 2;
	// Test
	task.possibleMove(s, jump);
}

Output

 Stairs : 5, Jumps : 2
 Result : 8




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment