卒的遍历,马的遍历
Problem Detail - 【基础】卒的遍历 - 追梦算法网
就是从左上到右下,只能向左向下走,输出可以走到的所有的路径
#include<iostream> using namespace std; int n,m; int sum; struct data{ int p,q; }a[110];//代表每次步骤的坐标记录下来 int g[100][110]; int dx[2]={1,0}; int dy[2]={0,1}; void dfs(int x,int y,int u) { if(x==n&&y==m) { a[u].p=x; a[u].q=y; sum++; cout<<sum<<":"<<a[1].p<<","<<a[1].q; for(int i=2;i<=u;i++) cout<<"->"<<a[i].p<<","<<a[i].q; cout<<endl; return ; } a[u].p=x; a[u].q=y; g[x][y]=1; for(int i=0;i<2;i++) { int xx=x+dx[i],yy=y+dy[i]; if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&!g[xx][yy]) { dfs(xx,yy,u+1); g[x][y]=0; } } } int main(){ cin>>n>>m; dfs(1,1,1); return 0; } /* dfs要记录路径 每次搜索的深度,也就是每个步骤上,每次到达什么地方 */
Problem Detail - 【提高】马的遍历 - 追梦算法网
这个跟上一题基本上不变...
#include<iostream> using namespace std; int n,m,sum; struct data{ int p,q; }a[110]; int dx[4]={2,1,-1,-2}; int dy[4]={1,2,2,1}; int g[110][110]; void dfs(int x,int y,int u) { if(x==4&&y==8) { a[u].p=x; a[u].q=y; sum++; cout<<sum<<":"<<a[1].p<<","<<a[1].q; for(int i=2;i<=u;i++) cout<<"->"<<a[i].p<<","<<a[i].q; cout<<endl; return ; } a[u].p=x; a[u].q=y; g[x][y]=1; for(int i=0;i<4;i++) { int xx=x+dx[i],yy=y+dy[i]; if(xx>=0&&yy>=0&&xx<=4&&yy<=8&&!g[xx][yy]) { dfs(xx,yy,u+1); g[x][y]=0; } } } int main(){ dfs(0,0,1); return 0; } /* bfs是一层层开始扫荡 dfs是一条道走到黑 求方案数,走完了一条返回接着走 dfs的参数一定要确定好 */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具