马的走法

原创 2012年03月23日 21:22:45
题目描述: 在一个4*5的棋盘上,马的起始位置坐标(纵,横)由键盘输入,求马能返回初始位置的所有不同的走法的总数(Tip:马走过的位置不能重复,马走“日”字)。
测试样例:input:  2 2 output: 4596
解题步骤:(1)读入马的起始位置,进行合法性判断;
        (2)从起始位置开始搜索,搜索方法采用深搜,累计总数;
        (3)输出结果。

代码:


#include<stdio.h>
#include<string.h>
//注意数组下标从0开始,不是1,所以会有实际位置与数组下标相差1.
//int a[5][6];
int chess[4][5];//棋盘状态
const int t[2][8] = {{-1,-1,-2,-2,2,2,1,1},{-2,2,1,-1,1,-1,2,-2}};//马步方向
int sx,sy,tot;
void find_w(int p1,int p2);
int main()
{
	freopen("in_6.1","r",stdin);
	while(scanf("%d%d",&sx,&sy)!=EOF){
		if(sx<0||sy<0||sx>4||sy>5){
			printf("ERROR\n"); continue;
		}
		memset(chess,0,sizeof(chess));
		chess[sx-1][sy-1]=1;
		tot = 0;
		find_w(sx-1,sy-1);
		printf("%d\n",tot);
	}
	return 0;
}
void find_w(int p1,int p2)	//(p1,p2)表示当前所在的位置
{
	int pi,pj,i;
	for(i=0;i<8;i++){
		pi = p1 + t[0][i];
		pj = p2 + t[1][i];
		if(pi>=0&&pj>=0&&pi<=3&&pj<=4&&chess[pi][pj]==0){
			chess[pi][pj]=1;
			find_w(pi,pj);
			chess[pi][pj]=0;
		}
		else if(pi+1==sx&&pj+1==sy) tot++;
	}
}


2018年微服务将疯狂至死?带你领略不一样的思维历程!

本文是Dave Kerr发表的一篇微服务批判性文章,他认为复杂性是导致微服务将死的一个重要原因,实际上微服务本来是解决复杂性的,将牵一动百的单体架构变成很多独立发展的服务,相互隔离,复杂性关键是因为隔...
  • bntX2jSQfEHy7
  • bntX2jSQfEHy7
  • 2018年01月22日 00:00
  • 225

微服务

资料来源:有架构给我的一些资料,以及自己百度和论坛、社区找来的一些资料,权当做一个总结式的简介。。。   目录如下: 一、微服务架构介绍 二、出现和发展 三、传统开发模式...
  • Fighting_xr
  • Fighting_xr
  • 2018年01月23日 15:53
  • 93

spring cloud 微服务

微服务 微服务什么?微服务解决了什么问题?微服务有什么特点? 单体架构是什么 一个归档包包含了应用所有功能的应用程序, 我们通常称之为单体应用。架构单体应用的架构风格, 我们称之为单...
  • qq_27384769
  • qq_27384769
  • 2018年01月15日 11:07
  • 210

微服务架构选型实践

微服务架构选型实践 背景 随着公司一年多的成长,我们已经开发了数十个项目了,后台有 JAVA 的有 PHP 的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的 PK,碰撞出了许许多...
  • huangshulang1234
  • huangshulang1234
  • 2018年01月17日 09:34
  • 64

2018年,Java程序猿10本经典好书推荐

1、Java 8实战 本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。全书分四个部分:基...
  • youanyyou
  • youanyyou
  • 2018年01月07日 08:08
  • 463

2018 疯狂微服务之死

近期微服务的话题非常火爆,有时可谓非常“疯狂”:Netflix 在 devops 上做得很棒,同时 Netfix 也采用微服务。因此:如果我也用微服务,那么我也可以在 devops 方面做得很好。很多...
  • FL63Zv9Zou86950w
  • FL63Zv9Zou86950w
  • 2018年02月09日 00:00
  • 44

如何使用Java构建微服务

三种方案!使用Java构建微服务!
  • sisiy2015
  • sisiy2015
  • 2015年11月18日 12:32
  • 3080

求马跳棋盘踏满5*5的国际象棋棋盘有多少种解法?

题目如图所示。#include #include #define D 8 #define N 5 using namespace std;int chessboard[N][N]; int chess...
  • sinat_18127633
  • sinat_18127633
  • 2017年03月05日 11:57
  • 833

马走日棋盘算法

  问题描述在给定大小的方格状棋盘上, 将棋子”马”放在指定的起始位置 , 棋子”马” 的走子的规则为必须在棋盘上走”日”字; 从棋子”马”的起始位置开始, 搜索出一条可行的路径, 使得棋子”马”能走...
  • flashsj
  • flashsj
  • 2004年03月08日 10:00
  • 1358

2018年的第一个工作日,推荐几个优质公众号

2017刚过去不久,我们迎来了2018。工作、生活节奏超快的今天,想要不断提升自我,碎片化阅读学习是你最佳的选择,如果你有一颗学习的心,那这些学习型的公众号,绝对会让你受益匪浅。小编为你精选了技术领域...
  • j3T9Z7H
  • j3T9Z7H
  • 2018年01月02日 00:00
  • 672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:马的走法
举报原因:
原因补充:

(最多只允许输入30个字)