资源简介

在n x n棋盘(有n x n个格点的棋盘)的某个格点上有一个中国象棋马,马走日字。求一条周游棋盘的路径,使得马能够从起始位置起沿着该路径每个格点恰好走一次最后回到出发位置。 用回溯法解决该问题。输入一个正整数n,输出一个解,解的输出形式尽可能直观。

资源截图

代码片段和文件信息

#include “stdio.h“
int mn;
char **chess;
int ** trip;

bool check(int iint  j)
{
if(i<0 || i>=m || j<0 || j>=n) return false;
if(chess[i][j]==‘w‘)  return false;
if(chess[i][j]==‘1‘)  return false;
return true;
}
void output(int count )
{
printf(“%d\n“count);
for(int i=0;i {
for(int j=0;j printf(“%4d“trip[i][j]);
printf(“\n“);
}
}
void Walk(int iint jint count)

{
//出口:i==m-1 && j==n-1
if(i==0 && j==0 && count==m*n) 
{
chess[i][j]=‘w‘;
trip[i][j]=++count;
output(count);
chess[i][j]=‘0‘;
trip[i][j]=0;
return;
}

//合法性判断(出界,是否走过,是否故障)
if (!check(ij))  return;
else
{

//记录当前位置走过,步数
    count++;
     chess[i][j]=‘w‘;
     trip[i][j]=

评论

共有 条评论