357. Count Numbers with Unique Digits(动态规划)

来源:互联网 发布:mac beta 转 正式版 编辑:程序博客网 时间:2024/06/08 06:23

1.Description

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])


2.Analysis

排列组合问题


3.Code

class Solution {public:    static int permutation(int n, int r) {        if(r == 1) return 1;        else return n*permutation(n-1,r-1);    }    int countNumbersWithUniqueDigits(int n) {        dp[0] = 1;        dp[1] = 10;        for(int i = 2; i <= n; i++) {            dp[i] = dp[i-1] + 9*permutation(9,i);        }        return dp[n];    }private:    int dp[1000];};
原创粉丝点击