r为矩阵的行,c为矩阵的列

将结果输出到当前目录下的results.txt。

结果将给出:1.是否存在路径使马可以按要求走遍所有的方格;

2.解的总数;

3.程序执行的时间;

    #include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define r 2
#define c 4 int flag[r][c]={};//存放马跳路径的二维数组
int arr[r][c]={};
int x[]={,,-,-,,,-,-};
int y[]={,,,,-,-,-,-};
int n=,count;
FILE *fp; //初始化文件输出流
int initOut()
{
fp=fopen("results.txt","w"); //记得关闭
if(fp==NULL)
{
printf("File cannot open! " );
exit();
}
return ;
} //添加一个判断函数,判断这样的哈密顿路径是否存在
void judgeExistence(){
if(count==)
printf("%d * %d 的棋盘不存在能使得马可以不重复遍历完棋盘中每一格的路径\n",r,c);
} //输出马跳的步骤stepOut()
void stepOut(){
for(int a=;a<r;a++){
for(int b=;b<c;b++)
{
fprintf(fp,"%3d ",arr[a][b]);
}
fprintf(fp,"\n");
}
fprintf(fp,"\n");
} void DFS(int i,int j)
{
if(n==r*c)
{
count++;
stepOut();//写个函数,输出马跳的步骤stepOut()
} else
for(int k=;k<;k++)
{
if(i+x[k]>=&&i+x[k]<r&&j+y[k]>=&&j+y[k]<c&&flag[i+x[k]][j+y[k]]==)
{
flag[i+x[k]][j+y[k]]=;n++;
arr[i+x[k]][j+y[k]]=n;//给记录马跳步骤的矩阵赋值 DFS(i+x[k],j+y[k]);//循环+递归 flag[i+x[k]][j+y[k]]=;n--;
}
}
} void main()
{
clock_t start, finish; //计算程序一共花费了多少时间
long duration;
start=clock(); count=;
int X,Y;
label_1:printf("请输入马初始横坐标(X<=%d):X=\n",r);
scanf("%d",&X);
if(X>r){
printf("请输入小于等于%d的数\n",r);
goto label_1;
}
label_2:printf("请输入马初始纵坐标(Y<=%d):Y=\n",c);
scanf("%d",&Y);
if(Y>c){
printf("请输入小于等于%d的数\n",c);
goto label_2;
}
X=X-;
Y=Y-;
flag[X][Y]=;
arr[X][Y]=; initOut();
DFS(X,Y);
judgeExistence();
fprintf(fp,"解的总数为:%d\n",count); finish=clock();
duration=finish-start;//程序执行的时间,单位毫秒
fprintf(fp,"程序执行的时间为:%10ld ms\n",duration);
fclose(fp);
}

代码中有哪些不正确的地方欢迎大家指正。

马踏棋盘算法递归+回溯法实现 C语言的更多相关文章

  1. python 回溯法 子集树模板 系列 —— 18、马踏棋盘

    问题 将马放到国际象棋的8*8棋盘board上的某个方格中,马按走棋规则进行移动,走遍棋盘上的64个方格,要求每个方格进入且只进入一次,找出一种可行的方案. 分析 说明:这个图是5*5的棋盘. 图片来 ...

  2. 马踏棋盘问题-贪心(MATLAB&C++)

    原创文章,转载请注明:马踏棋盘问题-贪心(MATLAB&C++) By Lucio.Yang 1.问题描述 将马随机放在国际象棋的Board[0-7][0-7]的某个方格中,马按走棋规则进行移 ...

  3. 剑指Offer_12_矩阵中的路径(参考问题:马踏棋盘)

    题目描述  请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵 ...

  4. java实现马踏棋盘问题

    1.问题描述: 在国际象棋中,马走日,用户输入棋盘的起始位置从x:0-4,y:0-3输出从这一点开始,马走完整个棋盘的各个方案,并输出方案数 2.输入样式: 请输入棋盘马起始位置: 0 0 3.输出样 ...

  5. C++代码审查---审查孙晓宁马踏棋盘谜题程序

    与孙晓宁同学结对审查,其代码地址如下:https://github.com/brunnhilder/-1/blob/master/%E9%A9%AC%E8%B8%8F%E6%A3%8B%E7%9B%9 ...

  6. 马踏棋盘--dfs

    [问题描述]关于马踏棋盘的基本过程:国际象棋的棋盘为 8*8 的方格棋盘.现将"马"放在任意指定的方格中,按照"马"走棋的规则将"马"进行移 ...

  7. C语言递归回溯法迷宫求解

    本例将随机产生一个10*10的迷宫输出后,在下面输出此迷宫的解法. 解法为从坐标(1,1)处进入,从(8,8,)出去,优先线路为先右后下再上最后为左. 不少人求解此题时运用的栈的相关知识,本例寻找线路 ...

  8. 算法之--回溯法-迷宫问题【python实现】

    题目描述 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0,  ...

  9. poj 1321 棋盘问题 (回溯法)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 69951   Accepted: 33143 Descriptio ...

随机推荐

  1. Oracle over函数学习

    sql over的作用及用法 RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( ) OVER ( [que ...

  2. React配合Webpack实现代码分割与异步加载

    这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  3. 【CSS Cookbook】笔记摘要(二)

     页面元素 使用text-align性质可以居中显示块级元素中的文字.把margin-left和margin-right设为auto时,该元素则会相对于父元素居中显示.但是现在流行的一些较低版本的浏览 ...

  4. cuda学习1-初始庐山真面目

    cuda作为gpu计算中的代表,拥有着超级高的计算效率,其原因是gpu实际相当与一台超级并行机组,使用过MPI做并行计算的人们可能知道,所谓的并行计算,简单讲就是用多个U(计算单元)来完成一个U的计算 ...

  5. 【Netty】EventLoop和线程模型

    一.前言 在学习了ChannelHandler和ChannelPipeline的有关细节后,接着学习Netty的EventLoop和线程模型. 二.EventLoop和线程模型 2.1. 线程模型 线 ...

  6. vue组件之间的通信以及如何在父组件中调用子组件的方法和属性

    在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...

  7. 彻底清除Linux centos minerd木马

    前几天,公司两台linux服务器,一台访问速度很慢,cpu跑满,一台免密码登录失效,公钥文件被改写成redis的key.用htop命令查询发现了minerd木马进程,初步猜测是redis没有配访问权限 ...

  8. jq、js中判断checkbox是否选中

    最近在开发项目时用到checkbox复选框,其中遇到一个问题:在JQ中如何判断checkbox是否被选中呢?之前用JQ获取元素的属性用的都是attr(),但用在checkbox上却没有用,原因何在?? ...

  9. 全景智慧城市常诚——一个实体商家“自剖”VR全景的势在必得

    谈起"智慧城市",你的心中是否充满了期待?随着互联网的发展,人们对于"智慧城市"的需求越来越迫切.现在想想,我也算是首批入驻全景智慧城市的商家之一了.在各种连锁 ...

  10. Android依赖管理与私服搭建

    在Android开发中,一个项目需要依赖许多的库,我们自己写的,第三方的等等,这篇文件介绍的就是自己搭建私服,创建自己的仓库,进行对我们自己写的库依赖管理.本文是在 mac book pro 环境上搭 ...