马走日-dfs
马在中国象棋以日字形规则移动。
请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。
- 马能走的方向不是4个(上下左右),而是8个。
- 有多组数据!!!
- x,y下标均从0开始
#include<bits/stdc++.h> using namespace std; bool vis[15][15]; int ans=0; int h,l; int dx[]= {-1,-2,-2,-1,1,2,2,1}; int dy[]= {-2,-1,1,2,2,1,-1,-2}; void dfs(int x,int y,int dep) { if(dep==h*l) { ans++; return; } for(int i=0; i<8; i++) { int x2=x+dx[i]; int y2=y+dy[i]; if(x2<0 || x2>h-1 || y2<0 || y2>l-1) continue; if(vis[x2][y2]) continue; vis[x2][y2]=1; dfs(x2,y2,dep+1); vis[x2][y2]=0; } } int main () { int T; cin>>T; while(T--) { int x,y; cin>>h>>l>>x>>y; memset(vis,0,sizeof vis); ans=0; vis[x][y]=1; dfs(x,y,1); cout<<ans<<endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~