PythonTip 50道题目(部分题解)


一马当先 

讨论此题 | 解题报告 
 (AC/Submit)Ratio(461|1769)26.06% 

描述:
下过象棋的人都知道,马只能走'日'字形(包括旋转90°的日),现在想象一下,给你一个n行m列网格棋盘,
棋盘的左下角有一匹马,请你计算至少需要几步可以将它移动到棋盘的右上角,若无法走到,则输出-1.
如n=1,m=2,则至少需要1步;若n=1,m=3,则输出-1。
解题思路:刷过不少ACM题,这样的题目自然一看就知道思路,重点在于学习用已经学过的C++转化成PYthon语言
用list二维列表保存棋盘,三维列表保存要到达的棋盘的坐标和所需要的步数。
列表的基本用法:点击打开链接
我的代码:(因为我的sublime text 3还没解决中文问题,导致不能用中文注释,正在解决ing )
m=6
n=n+1
m=m+1
cnt = 1
dir = [[-1,2],[1,2],[-2,1],[2,1],[-2,-1],[2,-1],[-1,-2],[1,-2]]
map = [[0]*(m) for x in range(0,n)]
flag =[[0]*(m) for x in range(0,n)]
success = 0
step = [[0,0,0]] 
flag[0][0] = 1
while len(step)>0 and success==0:
	temp = step.pop()
	for i in range(0,8):
		ex = temp[0] + dir[i][0]
		ey = temp[1] + dir[i][1]
		if ex>=0 and ex<n and ey>=0 and ey<m and flag[ex][ey]==0:
			step.append([ex,ey,temp[2]+1])
			flag[ex][ey] = 1
	        if ex==n-1 and ey==m-1 :
	        	success = 1
	        	cnt = temp[2]+1
if success == 1:
	print cnt
else:
	print -1

                                 
                                                                                                          格式化时间  

讨论此题 | 解题报告 
 (AC/Submit)Ratio(734|1830)40.11% 

描述:
给你一个时间t(t是一个字典,共有六个字符串key(year,month,day,hour,minute,second),值为每个值为数字组成的字符串,
如t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}
请将其按照以下格式输出, 格式:XXXX-XX-XX XX:XX:XX。如上例应该输出: 2013-09-30 16:45:02。
我的代码:
res=t['year'].zfill(4)+'-'+t['month'].zfill(2)+'-'+t['day'].zfill(2)+' '+t['hour'].zfill(2)+':'+t['minute'].zfill(2)+':'+t['second'].zfill(2)
print res
                                                             

序列判断 
讨论此题 | 解题报告 
 (AC/Submit)Ratio(855|2432)35.16% 

描述:
给你一个整数组成的列表L,按照下列条件输出:
若L是升序排列的,则输出"UP";
若L是降序排列的,则输出"DOWN";
若L无序,则输出"WRONG"。
解题思路:用切片保存原列表中内容,sort()保存递增序列,reverse()保存递减序列
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值