马的走法
来源:互联网 发布:烟筒防风帽制作数据 编辑:程序博客网 时间:2024/05/16 06:07
马的走法
Time Limit: 1000MS Memory limit: 65536K
题目描述
在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。如果马的初始位置坐标超过棋盘的边界,则输出ERROR。例如初始位置为4 6,则输出ERROR。
输入
输入数据只有一行,有两个用空格分开的整数,表示马所在的初始位置坐标。首行首列位置编号为(1 1)。
输出
输出一行,只有一个整数,表示马能返回初始位置的所有不同走法的总数。
如果输入的马的初始位置超出棋盘边界,则输出ERROR。
如果输入的马的初始位置超出棋盘边界,则输出ERROR。
示例输入
2 2
示例输出
4596
- 提交
- 状态
#include <stdio.h>
#include <string.h>int f[][2] = {{-1,2},{1,2},{-1,-2},{1,-2},{-2,1},{2,1},{-2,-1},{2,-1}};
int vis[8][8];
int n,m,sum;
void dfs(int x,int y)
{
int i;
for(i = 0;i < 8; i++)
{
int nx = x+f[i][0];
int ny = y+f[i][1];
if(nx<1||nx>4||ny<1||ny>5)
continue;
if(nx == n&&ny == m)
sum++;
if(vis[nx][ny]==0)
{
vis[nx][ny] = 1;
dfs(nx,ny);
vis[nx][ny] = 0;
}
}
}
int main()
{
scanf("%d %d",&n,&m);
memset(vis,0,sizeof(vis));
if(n<1||n>4||m<1||m>5)
printf("ERROR\n");
else
{
sum = 0;
vis[n][m] = 1;
dfs(n,m);
printf("%d\n",sum);
}
return 0;
}
代码菜鸟,如有错误,请多包涵!!
0 0
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- 马的走法
- kvc与kvo 实现原理
- php日期转时间戳,指定日期转换成时间戳
- android 时间控件+选取本地照片
- Android工具类系列-DensityUtil(尺寸单位转换)
- ab 压力测试 脚本
- 马的走法
- Rxjava(3.响应式编程好处)
- 凸优化笔记(一)
- tomcat 解析(二)-消息处理过程
- kafka的分布式原理解读
- text-align-last safari 不支持的解决办法
- Cocos2d-x微信登陆Demo
- windows 服务器提示curl_init() not function
- C语言基础 用转义序列输出双引号