【发布时间】:2018-08-16 16:19:16
【问题描述】:
我为下面的问题陈述编写了一个代码,它适用于大多数输入。但它不适用于像 1,1,1,1,1,1,1,3 这样的输入。答案应该是 11/13 11:11 但它返回 0(这意味着它找不到有效的日期)。我明白为什么会发生这种情况,但我找不到解决方案。
问题描述:
Arun 和他的妹妹 Usha 正在互相挑战 数学难题。更聪明的乌莎想出了 给阿伦从 0 到 9 的 12 个不同数字,并让他形成 2018 年与他们最大的约会时间。阿伦有点紧张, 要求你帮助他完成一个计算机程序。乌莎会给阿伦 12 不同的数字。他需要在 2018 年:MM/DD 表格中的日期(所有四位数字必须是 存在),以及格式为 HH:MM 的时间(所有四位数字必须是 当下)。日期可能从 01/01 到 12/31,时间可能从 00:00 至 23:59(24 小时制)。提供的数字可能是 在 Arun 给出的答案中只使用过一次。如果超过一个日期 可能形成时间组合,Arun 需要给出最新的有效 日期时间可能在 2018 年。
约束
个位数(0-9 中的任何一个)
输入格式
由 12 个序列组成的行(不一定不同) 用逗号分隔的单个数字(0-9 中的任何一个)。序列将是 不减少。
输出
2018 年可能的最大有效日期时间。输出必须 格式为 MM/DD HH:MM 如果无法构造日期时间,则 输出应该是 0
说明
示例 1:
输入
0,0,1,2,2,2,3,5,9,9,9,9
输出
12/30 22:59
解释
给出了 Arun 使用的 12 位数字。最长有效日期 时间只使用给定的数字,并且每个数字最多使用 一次是 12/30 22:59 这是输出。
示例 2
输入
3,3,3,3,3,3,3,3,3,3,3,3
输出
0
解释
由于输入中不存在小于 3 的数字,因此不能使用有效月份 形成。因此,输入不能形成有效的日期时间 数字。
我的代码:
seq_a=list(map(int,input().split(',')))
# print(seq_a)
seq_a.sort(reverse=True)
# print(seq_a)
months=[None,None]
days=[None,None]
hrs=[None,None]
mins=[None,None]
#months
for x in seq_a:
if x <= 1:
months[0]=x
seq_a.remove(x)
break
if months[0] is not None:
if months[0]==1:
for x in seq_a:
if x <= 2:
months[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x>0 and x <= 9:
months[1]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins)
#days
if months[1] is not None:
month=int(str(months[0])+str(months[1]))
# print(month)
if month==2:
for x in seq_a:
if x <= 2:
days[0]=x
seq_a.remove(x)
break
if days[0] is not None:
if days[0]==2:
for x in seq_a:
if x <= 7:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 9:
days[1]=x
seq_a.remove(x)
break
elif month<=7:
if month%2==0:
for x in seq_a:
if x <= 3:
days[0]=x
seq_a.remove(x)
break
if days[0] is not None:
if days[0]==3:
for x in seq_a:
if x == 0:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x > 0 and x <= 9:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 3:
days[0]=x
seq_a.remove(x)
break
if days[0] is not None:
if days[0]==3:
for x in seq_a:
if x <= 1:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 9:
days[1]=x
seq_a.remove(x)
break
else:
if month%2==0:
for x in seq_a:
if x <= 3:
days[0]=x
seq_a.remove(x)
break
if days[0] is not None:
if days[0]==3:
for x in seq_a:
if x <= 1:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 9:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 3:
days[0]=x
seq_a.remove(x)
break
if days[0] is not None:
if days[0]==3:
for x in seq_a:
if x == 0:
days[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 9:
days[1]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins,"YOLO")
#hrs
if days[1] is not None:
for x in seq_a:
if x <= 2:
hrs[0]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins)
if hrs[0] is not None:
if hrs[0]==2:
for x in seq_a:
if x < 4:
hrs[1]=x
seq_a.remove(x)
break
else:
for x in seq_a:
if x <= 9:
hrs[1]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins)
#mins
if hrs[1] is not None:
for x in seq_a:
if x < 6:
mins[0]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins)
if mins[0] is not None:
for x in seq_a:
if x <= 9:
mins[1]=x
seq_a.remove(x)
break
# print(seq_a)
# print(months,days,hrs,mins)
if mins[1] is not None:
print(str(months[0])+str(months[1])+'/'+str(days[0])+str(days[1])+' '+str(hrs[0])+str(hrs[1])+':'+str(mins[0])+str(mins[1]))
else:
print(0)
【问题讨论】:
标签: python algorithm date datetime