免费范围从一开始编辑我的问题,因为它是不够清楚:入门内的另一个范围
假设你有从1到1000
一系列考虑,在这个范围内的一些数字被保留(这是动态的)。
E.g. (i)
我想要在1..1000范围内获得一个5个数字的连续数字块,以确保这个数字块不包含任何保留的数字。如果这当然存在。
如果(i)是分配号码的列表,则第一个块是6,7,8,9,10。它不能是1,2,3,4,5,因为5是保留的。
我认为现在更清楚:)
我认为这应该是一个循环检查所有号码从1到995,并检查各号起始号码是否被保留 - 如果不是,检查如果4以下数字也保留。如果没有,我们有一个块。如果是,继续下一个未分配的号码,并检查后面的4位数字再次。当第一个空闲块满足时,打破循环并存储它!
有点奇怪,你可以尝试改进解释并给出一些示例代码吗?至少一个算法。 – fedorqui
考虑如何指定使用的数字 - 并在问题中说明。它们是按顺序指定的?是否有比N,M,O,... Z更经济的表示形式 - 简单数字列表?所使用值的压缩表示是否可以更容易地找到给定大小的间隙?你多久会这样做? (一次:使用什么算法或表示法并不重要,很多次:它开始很重要,尽管只有1000次蛮力的范围会让你走很长的路。) –
一个免费的5个大小的块就足够了; )。所以答案只有一次。 – aprin