|
发表于 10-5-2015 08:49 AM
|
显示全部楼层
- from queue import Queue& p$ ~/ u( z, k, l8 d
. f+ ?' v r6 N- [4 Y& ]- def solveMonkeyGrid(digitsSumLimit):
' J2 y, p& f2 } - steps = [[-1, 0], [1, 0], [0, -1], [0, 1]]; m5 U/ ?/ u0 i/ Z$ w
- sumDigits = lambda n: sum([int(c) for c in str(abs(n))])
; q0 q0 L) u' H. V8 c5 k
5 D- }) Y ~$ o0 ? S H0 a- visited = set()7 ~" o) @& j$ }8 O' {: }
- queue = Queue()9 l# g1 o- h$ F) M4 u# A, e
- queue.put((0, 0))
1 C4 Q# _! h% i6 M8 F( [ - visited.add((0, 0))
, w6 t7 E3 p9 _) `- W: y" }7 r7 Z - cnt = 1
' B, |/ }$ y) {% }) c: D3 H) z - while not queue.empty():
( Q7 r" T9 \+ T7 `" V* k - x, y = queue.get()
1 Y5 i) A1 G+ s. `9 T) b Q - for i in range(4):* b- G: A! ?/ D! A
- nx, ny = x + steps【i】[0], y + steps【i】[1]
' n0 ~/ C5 x3 H& c5 C# `7 _ - if (nx, ny) not in visited and sumDigits(nx) + sumDigits(ny) <= digitsSumLimit:
, G9 w$ u; w8 E - queue.put((nx, ny))1 ^* B5 j+ m1 v7 |6 ^) ~
- visited.add((nx, ny)): |8 c, A& \" n# R, x
- cnt += 1
3 q9 Z. K* Z# i2 a/ H5 A -
7 [- P6 l0 X% Q9 H: J - return cnt
: @" i& u$ \6 |) N - 7 j; u! q% R! ]+ m1 D* g/ F
- # p! v7 D5 t1 z& d
- # test
+ j/ J% E& z8 Y8 \ - print(solveMonkeyGrid(19))
* {+ y) H0 P$ G, Q" z
复制代码
% f; U' @8 o1 t' y: [+ a, }* i: C5 ]结果是102485 |
|