Given n, find count of n digit Stepping numbers. A number is called stepping number if all adjacent digits have an absolute difference of 1. 321 is a Stepping Number while 421 is not.
Input : 2 Output : 17 Explanation: The numbers are 10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98. Input : 1 Output : 10 Explanation: the numbers are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
A naive approach is to run a loop for all n digit numbers and check for every number if it is Stepping.
An efficient approach is to use dynamic programming.
In dp[i][j], i denotes number of digits and j denotes last digit. // If there is only one digit if (i == 1) dp(i, j) = 1; // If last digit is 0. if (j == 0) dp(i, j) = dp(i-1, j+1) // If last digit is 9 else if (j == 9) dp(i, j) = dp(i-1, j-1) // If last digit is neither 0 // nor 9. else dp(i, j) = dp(i-1, j-1) + dp(i-1, j+1) Result is ∑dp(n, j) where j varies from 1 to 9.
Time Complexity: O(n)
Auxiliary Space: O(n)Number of n digit stepping numbers | Space optimized solution
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Number of n digit stepping numbers | Space optimized solution
- Program to print first N Stepping numbers
- Count of N-digit numbers having digit XOR as single digit
- Print Nth Stepping or Autobiographical number
- Count of Numbers in Range where first digit is equal to last digit of the number
- Generate a number such that the frequency of each digit is digit times the frequency in given number
- Count n digit numbers not having a particular digit
- Count numbers in a range with digit sum divisible by K having first and last digit different
- Largest number less than N with digit sum greater than the digit sum of N
- Find the remainder when First digit of a number is divided by its Last digit
- Last digit of a number raised to last digit of N factorial
- Min steps to convert N-digit prime number into another by replacing a digit in each step
- Count 'd' digit positive integers with 0 as a digit
- Check if frequency of each digit is less than the digit
- Count of pairs (A, B) in range 1 to N such that last digit of A is equal to the first digit of B
- Count of N-digit Numbers having Sum of even and odd positioned digits divisible by given numbers
- Count total number of N digit numbers such that the difference between sum of even and odd digits is 1
- Number of occurrences of 2 as a digit in numbers from 0 to n
- Count numbers with difference between number and its digit sum greater than specific value
- Check whether a number can be expressed as a product of single digit numbers
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.