标签:
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
Example:
Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99]
)
Hint:
思路:Hint中提示的一样,既可以用回溯,也可以用DP的递推。
代码:
方法一:
n=0: f(0)=1
n=1: f(1)=10
2<=n<=10: f(n)=9*9*8*...*(9-k+2)+f(k-1)
n>10: f(n)=f(10)
1 class Solution { 2 public: 3 int countNumbersWithUniqueDigits(int n) { 4 if(!n) return 1; 5 int res=10,mutil=9; 6 n=n>10?10:n; 7 for(int i=1;i<n;i++){ 8 mutil*=10-i; 9 res+=mutil; 10 } 11 return res; 12 } 13 };
方法二:回溯法。
Leetcode 357. Count Numbers with Unique Digits
标签:
原文地址:http://www.cnblogs.com/Deribs4/p/5746487.html