Прикреплённый файл «konj.py»
Загрузка 1 #!/usr/bin
2 # coding: UTF8
3 '''
4 Решить следующую задачу методом рекурсивного перебора с возвратами. Найти путь (список координат полей), по которому шахматный конь, начав в левом верхнем углу доски (NxN полей, N > 5) обойдет ее всю, побывав на каждом поле всего один раз.
5 '''
6
7 Hod=((-1,-2),(-2,-1),(-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2))
8
9 def konj(N):
10 def check(x,y): return x>=0 and x<N and y>=0 and y<N
11 def __konj(p):
12 if len(p) == N*N: return p
13 for dx, dy in Hod:
14 x,y = p[-1][0]+dx,p[-1][1]+dy
15 if check(x,y) and (x,y) not in p:
16 r = __konj(p+[(x,y)])
17 if r: return r
18 return None
19 def pokaz(p):
20 Pole=[[0]*N for i in xrange(N)]
21 for i in xrange(len(p)):
22 Pole[p[i][0]][p[i][1]]=i
23 print "="*4*N
24 for x in xrange(N):
25 print "".join(["{0:4}".format(Pole[x][y]) for y in xrange(N)])
26 pokaz(__konj([(0,0)]))
27
28 konj(input())
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:13, 1.1 KB) [[attachment:konj.py]]
- [получить | показать] (2011-09-26 11:35:13, 1.7 KB) [[attachment:konjK.py]]
Вам нельзя прикреплять файлы к этой странице.