[디지털 DP] [357. Count Numbers with Unique Digits]
1020 단어 【leetcode】동적 기획
class Solution {
public:
int bit[15]={0}; // ,999999...
int dp[15]={0}; //
int a[10]={0}; //
int countNumbersWithUniqueDigits(int n) {
if(n>=10) return 8877691;
return solve(n);
}
// bit ,n=2,99
int solve(int n){
int pos=0;
while(n){
bit[++pos]=9;
n--;
}
return dfs(pos,true,true);
}
//
int dfs(int len,bool isMax,bool isFirst){
if(len==0) return 1;
// if(!isMax&&dp[len]>=0) return dp[len];
int cnt=0;
int maxNum=9;
for(int i=0;i<=maxNum;i++){
if(a[i]) continue;
a[i]=1;
if(isFirst&&i==0) a[i]=0;
cnt+=dfs(len-1,i==maxNum,isFirst&&i==0);
a[i]=0;
}
if(!isMax) dp[len]=cnt;
return cnt;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
leetcode 206 Reserve Linked List(반전 체인표)python3 귀속 & 교체 사고방식모든 Leetcode 제목이 비정기적으로 Github에 모였습니다. 여러분의 비판과 지적, 토론을 환영합니다. 모든 Leetcode 제목이 비정기적으로 Github에 모였습니다. 여러분의 비판과 지적, 토론을 환영합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.