需要一个算法来查找最早的日期,只使用数字0-9一次,格式为dd/mm hh:mm:ss。实际答案是:26/03 17:48:59
最佳答案
最简单的方法-生成[0…9]的所有排列并检查它们是否是有效日期。
10个=3628800个
如果你想提高效率,回溯会有帮助。在这种情况下,这只是一个简单的约束满足问题,有效日期的数目远小于排列的数目此外,您可以按最低月份、最低日等顺序考虑它们。
例如
01不起作用,因为时间的第一个数字(10s小时)需要是0或1
02不起作用,因为时间的第一个数字现在必须是1,而日期在二月只能是0,1,2。
等等。
fwiw-只有769个有效日期
import datetime
import itertools
count = 1
for perm in itertools.permutations( range(10) ):
i = 0;
day = perm[i]+perm[i+1]*10
i+=2
month = perm[i]+perm[i+1]*10
i+=2
hour = perm[i]+perm[i+1]*10
i+=2
minute = perm[i]+perm[i+1]*10
i+=2
second = perm[i]+perm[i+1]*10
try:
print datetime.datetime( 2012, month, day, hour, minute, second)
count+=1
except:
pass
print count
关于algorithm - 使用DD/MM HH:MM:SS格式仅使用数字0-9查找最早的日期一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10504932/