【发布时间】:2021-12-31 13:03:06
【问题描述】:
Card#0 Card#1 Card#2 Card#3 Card#4
1, 3, 5, 7 2, 3, 6, 7 4, 5, 6, 7 8, 9, 10,11 16, 17, 18, 19
9, 11, 13, 15 10,11,14,15 12,13,14,15 12,13,14,15 20, 21, 22, 23
17, 19, 21, 23 18,19,22,23 20,21,22,23 24,25,26,27 24, 25, 26, 27
25, 27, 29, 31 26,27,30,31 28,29,30,31 28,29,30,31 28, 29, 30, 31
这可以预测 1 到 31 之间的任何数字。所以它可以通过告诉程序员自己你的数字出现在哪些卡片上来预测你的生日。你取卡片的第一个数字,然后添加卡片上出现的第一个数字。
例如:
我选择的数字是 27。#27 出现在卡片 #0、1、3、4 上。每张卡片上出现的相应第一个数字将是#1 + 2 + 8 + 16 = 27
通过了解这种算法,我相信我们看到了一个 log(n) 算法正在使用,因为它将代码分成两半并完成了大约 2-3 个函数。
我的问题是如何通过增加参数号来扩展这个数组集,以创建更多可以完美排序的数组集,并且会产生比 #4 多的额外卡片。换句话说,我怎样才能使这个代码预测参数更宽并且仍然执行 O(log(n) 线性。
【问题讨论】:
标签: python arrays algorithm validation