骑士征程

这篇博客讲述了作者在解决“骑士征程”编程题目时遇到的挑战,主要难点在于确定骑士移动的方向和处理边界条件。作者通过初始化棋盘、设定骑士移动方向,以及检查逻辑错误来解决问题。虽然代码存在一些局限,但给出了一个基本的解决方案,能够增加骑士在棋盘上行走的步数。
摘要由CSDN通过智能技术生成

         今天终于完成“骑士征程”编程题,感觉很难,需要考虑的变化比较多。
         当前坐标,下一个坐标等等,最难搞的就是方向的确定。算法也有多种选择,不过凭我的大脑只能想到两种比较简单的,而且第二种还是在第一种的基础上实现的,呵呵。(感觉这就像有人问我会做几样菜,我答:会两种,第一,蛋炒饭;第二,饭炒蛋。)
         测试时,出现了一个比较严重的bug,属于逻辑上的问题,可能是刚开始没想好,查了好久才搞出来。就是在判断骑士和棋盘界限时,把当前骑士坐标和骑士的下个坐标点搞混了,结果骑士跳不到棋盘最里面的行列。
         虽最终实现了题目的基本要求,但还有个问题:骑士跳到三四步时就卡了,问题是走到死胡同里了,没有地方可以继续跳了。
解决办法:用nexti[l],nextj[l](0<=l<=7)记录下一步骑士的方位,置exits[l]为格(nexti[l],nextj[l])的出路,对于检查每一格(nexti[l] + imove[i],nextj[l] + jmove[j])的出路,取出路最少的格,将之赋值给min,最小不止一个,则将第一个赋给min。这个办法不一定会让骑士走完所有的棋盘格子,但至少会大大的提高能走得步数。
我未用解决办法前的代码如下(写的不好,莫笑~呵呵):

#include <stdio.h>
#include <time.h>

#define ROWS 8
#define COLS 8

int board[ROWS][COLS];                     /*定义棋盘为8×8*/
int imove[8], jmove[8];  /*移动的方位,其中0~7各有其值*/
int ikt,jkt;    /*骑士的当前坐标,骑士

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值