题目
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。
比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
思路
推测应该是使用datetime模块中的函数来对日期的合法性进行判断,但是我不太会日期的函数,就直接去看了题解。
代码
import os
import sys
# 请在此输入您的代码
import datetime
date = input()
Date = datetime.datetime
fmt = ["%y/%m/%d","%m/%d/%y","%d/%m/%y"]
d = []
for i in fmt:
try:
_date = Date.strptime(date,i) # 泰裤辣!
if(_date.year>2059): # 默认都是20年后吗?
_date = _date.replace(year = 1900 + _date.year%100)
if(_date not in d):
d.append(_date)
except Exception as e:
pass
d.sort()
for i in d:
print(Date.strftime(i,"%Y-%m-%d"))
题目
X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10×1010×10 相互连通的小房间组成的。
房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:
- L 表示走到左边的房间,
- R 表示走到右边的房间,
- U 表示走到上坡方向的房间,
- D 表示走到下坡方向的房间。
X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?
思路
DFS
代码
import os
import sys
# 请在此输入您的代码
path = ["UDDLUULRUL",
"UURLLLRRRU",
"RRUURLDLRD",
"RUDDDDUUUU",
"URUDLLRRUU",
"DURLRLDLRL",
"ULLURLLRDU",
"RDLULLRDDD",
"UUDDUDUDLL",
"ULRDLUURRR"]
count = 0
def find(x,y):
if x < 0 or x > 9 or y < 0 or y > 9:
global count
count += 1
return True
if tablelist[x][y] == 1:
return False
tablelist[x][y] = 1
if path[x][y] == 'U':
find(x-1, y)
elif path[x][y] == 'D':
find(x+1, y)
elif path[x][y] == 'R':
find(x, y+1)
elif path[x][y] == 'L':
find(x, y-1)
return False
for i in range(10):
for j in range(10):
tablelist = [[0] * 10 for i in range(10)]
find(i,j)
print(count)