iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何使用C++实现马踏棋盘
  • 716
分享到

如何使用C++实现马踏棋盘

2023-06-29 05:06:38 716人浏览 安东尼
摘要

这篇文章主要介绍如何使用c++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针的方式寻找下一格,算法比较简单,就通过递

这篇文章主要介绍如何使用c++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针的方式寻找下一格,算法比较简单,就通过递归和循环回溯即可,就是如果是8*8的数组,最坏可能执行8^(x*y)次,耗时长到怀疑人生。

如何使用C++实现马踏棋盘

#include<iOStream>#define X 5#define Y 5 void ShowResult();using namespace std; int chess[Y][X]={    0};int counter=0; int Next(int* x,int* y,int where){     switch(where){        case 0:            if(*x+1<X&&*y-2>=0&&chess[*y-2][*x+1]==0){                *x+=1;                *y-=2;                return 1;            }            break;        case 1:            if(*x+2<X&&*y-1>=0&&chess[*y-1][*x+2]==0){                *x+=2;                *y-=1;                return 1;            }            break;        case 2:            if(*x+2<X&&*y+1<Y&&chess[*y+1][*x+2]==0){                *x+=2;                *y+=1;                return 1;            }            break;        case 3:            if(*x+1<X&&*y+2<Y&&chess[*y+2][*x+1]==0){                *x+=1;                *y+=2;                return 1;            }            break;        case 4:            if(*x-1>=0&&*y+2<Y&&chess[*y+2][*x-1]==0){                *x-=1;                *y+=2;                return 1;            }            break;        case 5:            if(*x-2>=0&&*y+1<Y&&chess[*y+1][*x-2]==0){                *x-=2;                *y+=1;                return 1;            }            break;        case 6:            if(*x-2>=0&&*y-1>=0&&chess[*y-1][*x-2]==0){                *x-=2;                *y-=1;                return 1;            }            break;        case 7:            if(*x-1>=0&&*y-2>=0&&chess[*y-2][*x-1]==0){                *x-=1;                *y-=2;                return 1;            }            break;    }    return 0;} int Explore(int x,int y){    int x1=x;    int y1=y;    int flag;    int where=0;         counter++;    chess[y][x]=counter;         if(counter==X*Y){        return 1;    }                flag=Next(&x1,&y1,where);    while(flag==0&&where<7){        where++;        flag=Next(&x1,&y1,where);    }            while(flag){        if(Explore(x1,y1)==1){            return 1;        }        else{            x1=x;            y1=y;            where++;            flag=Next(&x1,&y1,where);            while(flag==0&&where<7){                where++;                flag=Next(&x1,&y1,where);            }        }    }    if(flag==0){        chess[y][x]=0;        counter--;    }    return 0;} void ShowResult(){        for(int i=0;i<Y;i++){        for(int j=0;j<X;j++){            cout.width(4);            cout<<chess[i][j]<<' ';        }        cout<<endl;    }    cout<<endl;} int main(){    int start=clock();    int result=Explore(2,1);    int end=clock();    if(result){        ShowResult();            }    else{        cout<<"have no path!"<<endl;     }     cout<<"spend time:"<<(end-start)/CLOCKS_PER_SEC<<" s"<<endl;    return 0;}

以上是“如何使用C++实现马踏棋盘”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网其他教程频道!

--结束END--

本文标题: 如何使用C++实现马踏棋盘

本文链接: https://www.lsjlt.com/news/322629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用C++实现马踏棋盘
    这篇文章主要介绍如何使用C++实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针的方式寻找下一格,算法比较简单,就通过递...
    99+
    2023-06-29
  • 如何使用C/C++实现马踏棋盘算法
    这篇文章主要介绍如何使用C/C++实现马踏棋盘算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下问题描述:将马随机放在国际象棋的8&times;8棋盘Board[0~7][0~7]的某个方格中,马...
    99+
    2023-06-29
  • C/C++实现马踏棋盘算法
    本文实例为大家分享了C/C++实现马踏棋盘的具体代码,供大家参考,具体内容如下 问题描述:将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按...
    99+
    2022-11-13
  • 如何使用java实现马踏棋盘
    这篇文章将为大家详细讲解有关如何使用java实现马踏棋盘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下马踏棋盘算法也被称为骑士周游问题将马随机放在过期象棋的8x8棋盘的某个方格中,马按走棋规则...
    99+
    2023-06-29
  • java如何实现马踏棋盘
    这篇文章给大家分享的是有关java如何实现马踏棋盘的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下马踏棋盘很好实现,但有时运行起来特别慢,还可能出不来结果,在这里要用到贪心算法来优化,即找出最难走的路径...
    99+
    2023-06-29
  • 怎么用C++代码实现马踏棋盘
    这篇文章主要讲解了“怎么用C++代码实现马踏棋盘”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C++代码实现马踏棋盘”吧!(一)马踏棋盘经典算法描述:  (1)马踏棋盘是经典...
    99+
    2023-06-29
  • C++贪心算法实现马踏棋盘
    本文实例为大家分享了C++贪心算法实现马踏棋盘的具体代码,供大家参考,具体内容如下 算法实现流程: 步骤1:初始化马的位置(结构体horse {x, y}) 步骤2:确定马从当前点...
    99+
    2022-11-13
  • C++实现马踏棋盘(骑士周游)
    马踏棋盘,用1枚马走遍棋盘。我用一个二维数组记录模拟的整个路径,x为列,y为行,以顺时针的方式寻找下一格,算法比较简单,就通过递归和循环回溯即可,就是如果是8*8的数组,最坏可能执行...
    99+
    2022-11-13
  • 如何使用java实现马踏棋盘游戏
    小编给大家分享一下如何使用java实现马踏棋盘游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下在4399小游戏中有这样一个游戏这是代码实现packa...
    99+
    2023-06-29
  • Java实现马踏棋盘算法
    本文实例为大家分享了Java实现马踏棋盘的具体代码,供大家参考,具体内容如下 马在某个点最多可能有8种走法,用递归和回溯实现。 注:代码中,查找下一个可走坐标是从右下第一个开始的,也...
    99+
    2022-11-13
  • java实现马踏棋盘游戏
    用java实现马踏棋盘游戏算法,供大家参考,具体内容如下 在4399小游戏中有这样一个游戏 这是代码实现 package com.HorseChess; import java....
    99+
    2022-11-13
  • C++算法设计之马踏棋盘的实现
    本文实例为大家分享了C++算法设计之马踏棋盘的具体代码,供大家参考,具体内容如下 (一)马踏棋盘经典算法描述:   (1)马踏棋盘是经典的程序设计问题之一,主要的解决方案有...
    99+
    2022-11-13
  • java实现马踏棋盘的算法
    本文实例为大家分享了java实现马踏棋盘的具体代码,供大家参考,具体内容如下 马踏棋盘算法介绍 8X8棋盘,马走日字,要求每个方格只进入一次,走遍棋盘上全部64个方格。 代码: p...
    99+
    2022-11-13
  • 如何使用C++基于栈的深搜算法实现马踏棋盘
    这篇文章主要介绍如何使用C++基于栈的深搜算法实现马踏棋盘,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!马踏棋盘(基于栈的深搜算法实现)简单来说,从任意指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条路径...
    99+
    2023-06-29
  • C++基于栈的深搜算法实现马踏棋盘
    马踏棋盘(基于栈的深搜算法实现) 简单来说,从任意指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条路径,这就是马踏棋盘的简单描述。 话不多说,代码如下,要是有什么不懂的地...
    99+
    2022-11-13
  • java实现马踏棋盘的完整版
    本文实例为大家分享了java实现马踏棋盘的具体代码,供大家参考,具体内容如下 马踏棋盘很好实现,但有时运行起来特别慢,还可能出不来结果,在这里要用到贪心算法来优化,即找出最难走的路径...
    99+
    2022-11-13
  • java怎么实现马踏棋盘算法
    本篇内容介绍了“java怎么实现马踏棋盘算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!马踏棋盘或骑士周游问题马踏棋盘算法也被称为骑士周游...
    99+
    2023-06-29
  • 基于Java实现马踏棋盘游戏算法
    马踏棋盘很好实现,但有时运行起来特别慢,还可能出不来结果,最常用的就是深度优先遍历+回溯,相信大家都学过数据结构,对图的深度遍历都有了解,下面就是代码的实现,如果对代码理解有困难,可...
    99+
    2022-11-13
  • java实现马踏棋盘算法(骑士周游问题)
    骑士周游问题 在8x8的国际棋盘上,按照马走日的规则,验证是否能够走遍棋盘。 解题思路 1、创建棋盘 chessBoard,是一个二维数组。2、将当前位置设置为已经访问,然后根据当...
    99+
    2022-11-13
  • Java实现马踏棋盘游戏算法的代码怎么写
    这篇文章主要介绍“Java实现马踏棋盘游戏算法的代码怎么写”,在日常操作中,相信很多人在Java实现马踏棋盘游戏算法的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java实现马踏棋盘游戏算法的代码...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作