马的遍历
在n*m(n表示行,m表示列)的棋盘上,马起始位置为x,y(注意:左上角第一个位置为1,1),问:马有多少种走的方法,将棋盘所有的位置全部走一遍,并且每个位置经过且仅经过一次。马跳“日”字。
输入
第一行:n,m(中间空格隔开)(n,m<7)
第二行:x,y(中间空格隔开)
输出
可能的方法数
样例
样例输入1
5 4
1 1
样例输出1
32
code:
#include <bits/stdc++.h> using namespace std; int ans = 0,n,m,arr[7][7]; int xx[9] = {0,-2,-2,-1,1,2,2,-1,1}; int yy[9] = {0,-1,1,2,2,-1,1,-2,-2}; void q(int a,int b,int k){ if(k == n*m){ ++ans; return; } for(int i = 1;i<=8;i++){ int abx = a+xx[i]; int aby = b+yy[i]; if(!arr[abx][aby] && abx > 0 && aby > 0 && abx <= n && aby <= m){ arr[abx][aby] = 1; q(abx,aby,k+1); arr[abx][aby] = 0; } } } int main(){ int x,y; cin>>n>>m; cin>>x>>y; arr[x][y] = 1; q(x,y,1); cout<<ans; return 0; }
本文作者:nasia
本文链接:https://www.cnblogs.com/nasia/p/17229411.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步