马的遍历(深搜)

问题描述

#include<iostream>

using namespace std;

int dx[5]={0,2,1,-1,-2};
int dy[5]={0,1,2,2,1};//增量数组
int a[1000][3];//记录路径
int m,n;
bool t; 

void printx(int tot){
    for (int i=1;i<tot;i++)
      cout<<"("<<a[i][1]<<","<<a[i][2]<<")->";
    cout<<"("<<a[tot][1]<<","<<a[tot][2]<<")"<<endl; 
}

void tryx(int step){ 
    if(a[step-1][1]==m&&a[step-1][2]==n){
        printx(step-1);
        t=true;
        return;
    } 
    for (int i=1;i<=4;i++){  //循环调用增量数组
      int ik=a[step-1][1]+dx[i];
      int jk=a[step-1][2]+dy[i];
      if(ik>=0&&ik<=m&&jk>=0&&jk<=n&&t==false){
        a[step][1]=ik;
        a[step][2]=jk;//标记
        tryx(step+1);
        a[step][1]=0;
        a[step][2]=0;//回溯 
      }
    }
}

int main(){
    cin>>m>>n;
    t=false;//防止输出多条路径,需靠t停止搜索 
    a[1][1]=0;
    a[1][2]=0;//马从(0,0)出发 
    tryx(2);
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.埋点是做什么的 2.如何进行埋点 3.埋点方案的设计 近期常被问到这个问题,我担心我的答案会将一些天真烂漫的孩...
    lxg阅读 2,029评论 0 1
  • 团队密云tb活动问题总结: 1.关于行程安排,需结合实际情况安排行程,不能仅仅取决于团队同学意愿。比如爬山后就不该...
    aurora硬硬同学阅读 230评论 0 0
  • 儿早上对我说,你还记得我初中时的年级第一吗?她去年考进北京大学了。她确实很厉害,几乎每次都是第一。儿还说了...
    大爱无疆杨青阅读 381评论 0 12
  • 小时候,希望自己快点长大 似乎长大了就是梦中的模样 长大后,希望自己永远长不大 大概是尝到了成长的苦味。 不知何时...
    煦雾阅读 181评论 0 0
  • 我今天看的书是淘气包马小跳,我在里面最喜欢的一个人物是马天笑,因为他是马小跳的爸爸,而且他是玩具厂的厂长,而且他很...
    茜思阅读 289评论 0 2