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
- Number of n digit stepping numbers | Space optimized solution
- Count of Numbers in Range where first digit is equal to last digit of the number
- Number of n digit numbers that do not contain 9
- Sum of n digit numbers divisible by a given number
- Number of occurrences of 2 as a digit in numbers from 0 to n
- Largest N digit number divisible by given three numbers
- Smallest n digit number divisible by given three numbers
- Count n digit numbers divisible by given number
- Count total number of N digit numbers such that the difference between sum of even and odd digits is 1
- Check whether a number can be expressed as a product of single digit numbers
- Count numbers with difference between number and its digit sum greater than specific value
- Count n digit numbers not having a particular digit
- Find the remainder when First digit of a number is divided by its Last digit
- Largest number less than N with digit sum greater than the digit sum of N
- Generate a number such that the frequency of each digit is digit times the frequency in given number
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.