骑士问题
在西洋棋(国际象棋)中骑士(就是马)的走法像马,都是”日”字行
(帖子不能画表格,不可以演示走法……在这里有http://www.bansun.com/bbs/thread-6420-1-1.html)
编一个程序 输入棋盘大小 和骑士开始的坐标,输出一个让骑士走遍棋盘每一个格子而且不重复的方法(也就是输出骑士走完棋盘每一个的路径)!!!!!!
以下是我自己写的,错得很离谱,后果很严重,各位高手帮忙看看,谢谢了
# include <stdio.h>
# define N 8
int account=1; //全局计数器,代表骑士移动的格子数目
void knight(int begin_x,int begin_y);
void move (int x,int y); //移动函数
struct //记录移动路径数组
{
int x,y;
}road[N*N+1];
int main()
{
int a,b;
printf(“输入开始坐标”);
scanf(“%d,%d”,&a,&b);
knight(a,b);
}
void knight (int begin_x,int begin_y)
{
road[account].x=begin_x; //对第一个路径赋值
road[account].y=begin_y;
move(road[account].x,road[account].y);
}
void move(int x,int y)
{
int static chessboard[N+1][N+1]={0}; //chessboard[N+1][N+1]=0代表没有经过的格子 chessboard[N+1][N+1]=1代表经过的格子
const way[8][2]={2,1,2,1,-1,-2,-1,-2,-2,1,-2,-1,1,2,1,-2}; //移动方法
int w=0; //w的数字代表移动方法
while(account<=N*N) //account大于N*N就说明已经走完格子
{
if(x+way[w][0]>0&&y+way[w][1]>0&&chessboard[x+way[w][0]][y+way[w][1]]==0)
{
x+=way[w][0]; //如果下一个格子满足条件就把下一格坐标赋值到当前坐标
y+=way[w][1];
account++; //移动到下一个格子
road[account].x=x;
road[account].y=y;
chessboard[x][y]=1; //chessboard[N+1][N+1]=1代表经过的格子
move (road[account].x,road[account].y); //把当前坐标作为起始坐标,继续前进
}
else w++;
if (w>7) //w大于7是说明没有路可以走
{
chessboard[x][y]=0; //当前格子清0
account–; //退回到上一个格子.
}
}
for (account=1;account<=N*N;account++) //打印路径
{
printf(“<%d,%d> ”,road[account].x,road[account].y);
}
}
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
发帖怎么不可以制作表格呀?也不可以上传附件呀?一楼发的网址好像注册才可以看呀。我晕。