URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 9 » 我们班程序设计赛里的一道题,关于国际象棋里的马
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
我们班程序设计赛里的一道题,关于国际象棋里的马
 
 
 
Subject: 我们班程序设计赛里的一道题,关于国际象棋里的马
Author: acar01    Posted: 2005-05-10 18:52    Length: 818 byte(s)
[Original] [Print] [Top]
国际象棋中“马”的行进规则是“马走‘日’”,棋盘是8*8共64个格子组成的,从左到右设为1-8列,从上到下设为1-8行。
要求分别编写递归的和非递归的两个程序,对于给定的一个“马”的最初位置(x,y),问该“马”可否在63步之内走完余下的63个格子,如不能则给出文字提示,若能则给出其中的一种走法的简单图示。
[输入形式的要求]
程序中通过提示输入两个整数,以代表“马”的原始位置坐标。
[输出形式的要求]
在屏幕上用矩阵形式输出“马”的行进步骤。
例如:“马”的最初位置为(4,5)时的一种行进方案其要求的输出格式如下:
42 15 36 39 30 17 32 21
37 54 41 16 35 20 29 18
14 43 38 53 40 31 22 33
55 60 49 44 01 34 19 28
50 13 56 61 52 27 02 23
59 62 51 48 45 24 05 08
12 47 64 57 10 07 26 03
63 58 11 46 25 04 09 06
----
好,该吃饭了…………
[Original] [Print] [Top]
Subject: Re: 我们班程序设计赛里的一道题,关于国际象棋里的马
Author: acar01    Posted: 2005-05-11 22:36    Length: 58 byte(s)
[Original] [Print] [Top]
等了一天了,却没人回..
555555555555
----
好,该吃饭了…………
[Original] [Print] [Top]
Subject: Re: 我们班程序设计赛里的一道题,关于国际象棋里的马
Author: sunsol    Posted: 2005-05-12 01:59    Length: 2,438 byte(s)
[Original] [Print] [Top]

class test:
def __init__(self):
a=[0]*8
self.data=[]
self.data1=[]
for c in range(8):
self.data.append(a[:])
self.data1.append(a[:])
for a in range(8):
for b in range(8):
self.data1[a]=self.zou((a,b))
self.step=[]

zoufa=((-2,-1),(-1,-2),(1,-2),(2,-1),(2,1),(1,2),(-1,2),(-2,1))
def zou(self,start):
bb=[]
for c in range(8):
a=start[0]+self.zoufa[c][0]
b=start[1]+self.zoufa[c][1]
if 0<=a<8 and 0<=b<8:
bb.append((a,b))
return bb

def start(self,x,y):
self.step=[]
self.step.append((x,y))
##ii=0
##iii=0
i=0
while 0<=i<63:
try:
x,y=self.step[i]
a,b=self.data1[x][y][self.data[x][y]]
self.data[x][y]+=1
if self.data[a]>0:
pass
else:
self.step.append((a,b))
i=i+1

except:
self.step.pop(i)
self.data[x][y]=0
i-=1
##if i>50 and iii==0:
## ii=i
## iii=1
##if i<ii:
## ii=i
## print '%d'%ii

def prt(self):
if self.step:
print ''
for c in range(8):
b=[str(d[0])+str(d[1])+' ' for d in self.step[c*8:c*8+7]]
print ''.join(b)
else:
print 'no path'







[Original] [Print] [Top]
« Previous thread
第一次用glade,真好用
Python 编 程
9
Next thread »
Python Challenge的谜题游戏有人玩吗?
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:11:13, cost 0.04311203956604 ms.