Arrays 数字放置和计数
我发现了一个微软的面试问题 我为你删去了一个问题: “这是一个包含 _ 0 _ 1 _ 2 _ 3 _ 4 _ 5 _ 6 _ 7 _ 8 _9位数字“使其在逻辑上正确。所以重点是,在有下划线的地方,你需要放一个数字,这样整个 这句话变为真。即,字符串中有10个、51个等 我在网上找不到答案。我们使用我的室友=)手动强制执行,并找到一个解决方案: 10,71,32,23,14,15,16,27,18,19Arrays 数字放置和计数,arrays,algorithm,sorting,counting,brute-force,Arrays,Algorithm,Sorting,Counting,Brute Force,我发现了一个微软的面试问题 我为你删去了一个问题: “这是一个包含 _ 0 _ 1 _ 2 _ 3 _ 4 _ 5 _ 6 _ 7 _ 8 _9位数字“使其在逻辑上正确。所以重点是,在有下划线的地方,你需要放一个数字,这样整个 这句话变为真。即,字符串中有10个、51个等 我在网上找不到答案。我们使用我的室友=)手动强制执行,并找到一个解决方案: 10,71,32,23,14,15,16,27,18,19 您将如何将此问题作为编程问题来处理?您将如何执行蛮力实现?有没有聪明的办法解决这个问题?有
您将如何将此问题作为编程问题来处理?您将如何执行蛮力实现?有没有聪明的办法解决这个问题?有不同的解决方案吗?暴力解决方案相当简单 尝试每个字符可能出现的次数。将目标出现次数与实际出现次数分开,并将两者进行比较
initialize a 'target' array to the target number of occurrences of each character
(initial values don't matter - they are assigned before being checked)
initialize an 'occurrences' array to the actual number of occurrences
(initial values are all 1's in this case)
call bruteForce(0)
bruteForce(value)
if value > greatest value
check data and exit is successful
for i = 1:9
target[value] = i
// fail early - not strictly necessary, but should help running time
if value >= i && occurrences[i] + 1 > target[i]
continue
occurrences[i]++
// recurse
bruteForce(value + 1)
occurrences[i]--