计算各个位数不同的数字个数
题目
思路
dp[i]=dp[i-1]少一位个数+(dp[i-1]-dp[i-2])i-1位新增个数*(11-i)增加新一位。
代码
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(!n) return 1;
vector<int> dp(n+1);
dp[0]=1;
dp[1]=10;
for(int i=2;i<=n;i++)
dp[i]=dp[i-1]+(dp[i-1]-dp[i-2])*(11-i);
return dp[n];
}
};