Openjudge 8465 马走日
来源:互联网 发布:unity3d 5.0 入门教程 编辑:程序博客网 时间:2024/06/05 06:10
马走日
链接
经典回溯题目
给出棋盘和初始坐标 问这个马有多少种方法遍历整个棋盘
思路
从初始点开始遍历每一个方向 并查看新点有没有被遍历过
如果没有就走出一步并在这一步继续搜
搜完需要回溯(恢复搜之前的状态)
如果搜索的深度达到N*M(即棋盘大小) 则遍历到了所有点 答案++
直到遍历完所有方案
代码
#include<iostream>#include<cstring>using namespace std;int dx[9]={0,1,1,-1,-1,2,2,-2,-2};int dy[9]={0,2,-2,2,-2,-1,1,1,-1};int a[111][111];int t,n,m,x,y,step,sum;int dfs(int &x,int &y,int step){if(step>=m*n){sum++;return 0;}for(int l=1;l<=8;l++){ int x1=x+dx[l];int y1=y+dy[l]; if(x1<n&&y1<m&&x1>=0&&y1>=0&&a[x1][y1]==0) {a[x1][y1]=1;dfs(x1,y1,step+1);a[x1][y1]=0;}}}int main(){ cin>>t; for(int i=1;i<=t;i++) {cin>>n>>m>>x>>y;a[x][y]=1;dfs(x,y,1);cout<<sum<<endl;memset(a,0,sizeof(a));sum=0;}}return 0
0 0
- Openjudge 8465 马走日
- openjudge 马走日
- 【openjudge】马走日
- OpenJudge
- [OpenJudge]胡
- OPENJUDGE LIST
- OPENJUDGE SET
- openjudge 迷宫
- openjudge 2764
- 【openjudge】Minecraft
- 【openjudge】登山
- 【openjudge】股票买卖
- 【openjudge】大盗阿福
- openjudge divisibility
- 【openjudge】糖果
- openjudge 糖果
- openjudge 仙岛求药
- 【openjudge】金银岛
- zzuli 1037 四则运算 JAVA
- x265代码阅读(一):cudata.cpp代码阅读
- Java第十天
- linux--基本的bash shell命令
- VC维的物理意义
- Openjudge 8465 马走日
- 二叉树系列问题——求二叉树中最远节点的距离
- 重新登录 页面跳转到之前页面的一种解决办法
- C++primer plus第9-10章笔记
- iOS中OC调用js方法简述(一)
- 死锁: delete+insert不存在PK
- jQuery自定义插件
- PyQt5教程(十)——自定义控件
- android之文件存储路径问题