这题是一个典型的深搜题,可这里没有样例只能一遍一遍试
需要用一个双向队列存储数据模拟栈,再顺序输出
所以输出需要一个单独的函数
就可以用一个深搜和一个输出函数解决
思路也是很简单
代码送上 希望能火
#include<bits/stdc++.h>
#define ll long long//偷个小懒
#pragma GCC optimize(2)
using namespace std;
ll a[20][20],t,b[20][20];
ll dx[4]={2,1,-1,-2},dy[4]={1,2,2,1},js=1;//长数据好习惯
struct node{
ll x,y;
};//结构体定义成员变量方便调用
deque<node> s;//结构体队列模拟栈
void p()//输出函数
{
cout<<js<<":"<<0<<","<<0;//输出固定值和格式
for(int i=1;i<s.size();i++)
{
cout<<"->"<<s[i].x<<","<<s[i].y;//输出其他值
}
cout<<endl;
js++;
}
void dfs(ll x,ll y)//深搜
{
if(x==4&&y==8)//强制输出
{
p();
}
for(int i=0;i<4;i++)
{
ll di=x+dx[i],dj=y+dy[i];
if(di>=0&&di<=4&&dj>=0&&dj<=8&&b[di][dj]==0)//递归调键
{
b[di][dj]=1;//赋初始值记录走过
s.push_back({di,dj});//模拟压栈
dfs(di,dj);//递归
b[di][dj]=0;//清空数组
s.pop_back();//清空队列
}
}
}
int main()
{
ios::sync_with_stdio(false);
b[1][1]=0;//赋值
s.push_back({0,0});//压入
dfs(0,0);//调用输出
return 0;//好习惯
}