ปัญหา
รับ num นับจำนวนตัวเลขที่มี num หลัก และทุกหลักไม่ซ้ำกัน
ตัวอย่าง
const num = 1;
0-9 ทั้งหมด 10 ตัว → 10
โค้ดตัวอย่าง (Dynamic Programming)
const num = 1;
const uniqueDigits = (num = 1) => {
const dp = [1, 10];
const sum = [1, 11];
for (let i = 2; i <= num; i++) {
dp[i] = sum[i - 1] + (10 - i) * (dp[i - 1]);
sum[i] = sum[i - 1] + dp[i];
}
return dp[num];
};
console.log(uniqueDigits(num));
console.log(uniqueDigits(2));
console.log(uniqueDigits(3));
คำอธิบาย
ใช้ Dynamic Programming: dp[i] = จำนวนตัวเลข i หลักที่ไม่ซ้ำ, sum[i] = สะสม
ผลลัพธ์
10 91 739