.
题目
Given an integer n, return the count of all numbers with unique digits, x, where 0 <= x < 10n.
Example 1:
Input: n = 2
Output: 91
Explanation: The answer should be the total numbers in the range of 0 ≤ x < 100, excluding 11,22,33,44,55,66,77,88,99
Example 2:
Input: n = 0
Output: 1
Constraints:
- 0 <= n <= 8
.
代码
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n == 0)
return 1;
if(n == 1)
return 10;
int *dp = new int [n+1];
dp[0] = 1;
dp[1] = 10;
for(int i = 2; i<=n; i++){
int inum = 9;
int times = 9;
for(int j = 1; j<i; j++){
inum *= times;
times --;
}
dp[i] = dp[i-1] + inum;
}
return dp[n];
}
};
.
一道动规题,又是一次AC ^________________________^ 开心!