【发布时间】:2023-03-14 08:31:01
【问题描述】:
这是一个编程难题,类似于:“如果一个数字的子字符串的所有数字的乘积都具有唯一值,则该数字被认为是出色的。”
示例:263(2、6、3、2*6 = 12、6*3 = 18)非常出色。
但是 236 (2, 3, 6, 2*3 = 6, 3*6 = 18) 并不出色。
我们只取子串,不取子序列。
我在想也许我们可以在这里应用动态规划,因为重复的产品计算?我们还有什么其他的解决方案? (这不是作业题。)
【问题讨论】:
-
这是只检查严格子集还是所有子集?换句话说,你在第一个例子中检查
2*6*3吗? -
您能具体说明一下您对彩色数字的定义吗? “我认为只有严格”并不是那么具体。您可以添加其他示例以及计算吗?
-
包含非严格子字符串仅对十进制数字中带有
0或1的数字很重要,如果其中至少有3位数字,它们已经保证不会很出色号码;否则总产品必然大于任何子产品。我认为唯一重要的数字是x0、x1和1x用于x ≠ 0,再加上10。 -
对于 263 ,子字符串是 , 2 ,6,3,26,63 。 263 不考虑在内。
-
DP 确实不是 FWIW 的必需品。只需枚举所有具有增加左边框的子字符串。时间复杂度是O(n^2),和DP解一样。
标签: algorithm language-agnostic