1. 问题描述:

在一个 8×8 的国际象棋棋盘上放置着一个车和一个马。保证这两个棋子之间不能攻击到对方。现在,要在棋盘的空格上放置另一个马,要求放置完毕后,三个棋子两两之间不得攻击到对方。请问,共有多少种放置方法。关于国际象棋行棋规则:
车:横、竖均可以走,步数不受限制,不能斜走。
马:每步棋先横走或竖走一格,然后再往外斜走一格;或者先斜走一格,最后再往外横走或竖走一格(即走"日"字)。可以越子,没有中国象棋中的"蹩马腿"限制。
关于棋盘:8 行从上到下依次编号为 1~8,8 列从左到右依次编号为 a~h,其中的具体方格可用字母加数字来描述,如下图所示。

输入格式

第一行包含一个小写字母(a~h)和一个数字(1~8),表示车的位置。第二行包含一个小写字母(a~h)和一个数字(1~8),表示马的位置。

输出格式

一个整数,表示第二个马的放置方法数量。

数据范围

所有测试点满足,输入车和马不在同一位置,且不会攻击到对方。

输入样例1:

a1
b2

输出样例1:

44

输入样例2:

a8
d4

输出样例2:

38
来源:https://www.acwing.com/problem/content/description/4074/

2. 思路分析:

因为是8 * 8的棋盘所以我们可以枚举每一个位置判断当前位置是否可以放,如果可以放那么方案数目加1。

3. 代码如下:

class Solution:# 判断当前的马是否可以攻击到车或者是马def check(self, a: int, b: int, c: int, d: int):x, y = abs(a - c), abs(b - d)return (x == 1 and y == 2) or (x == 2 and y == 1)def process(self):s1, s2 = input(), input()# a, b是车的位置a = ord(s1[0]) - ord("a")b = int(s1[1]) - 1# c, d是马的位置c = ord(s2[0]) - ord("a")d = int(s2[1]) - 1res = 0for i in range(8):for j in range(8):# 与车或者马的位置重合了if (i == a and j == b) or (i == c and j == d): continue# 放置的马被车攻击到if i == a or j == b: continue# 判断放置的马是否可以攻击到车或者是马if self.check(i, j, a, b) or self.check(i, j, c, d): continueres += 1return resif __name__ == '__main__':print(Solution().process())

4071 国际象棋(枚举)相关推荐

  1. Acwing第 24 场周赛【完结】

    打的很烂T2调试了好久,AK了,但是时间有点长,看来还得努力. 目录 4070. 异或[签到] 4071. 国际象棋[暴力枚举] 4072. 习题册[模拟 小根堆] 4070. 异或[签到] http ...

  2. 【HDU - 1281 】棋盘游戏 (经典的二分图匹配,匈牙利算法,枚举删除顶点,必须边,关建边)

    题干: 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的"车",并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才 ...

  3. UVA 11134 Fabled Rook 枚举 multiset加速

    题意说的是给出一个长度为n的国际象棋的棋盘,然后给出n个车的可以放置的范围,范围是一个矩形,用左上和右下两对数来描述,问是否存在方式使得每个车都放在他自己的范围里面且相互不冲突 这里x方向和y方向是不 ...

  4. html+js+css国际象棋,画面超精致!!

    文章目录 游戏规则 游戏效果(上方三处黑色字为注释) 游戏原理 画面 电脑下棋 游戏代码 index.html index.css style.css index.js 游戏规则 游戏规则 游戏效果( ...

  5. C语言项目实战:《国际象棋》零基础项目,200 行源代码示例

    这篇文章主要为大家详细介绍了C语言实现--<国际象棋项目>,它和中国象棋可不一样哟!文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下! 游戏介绍: 国际象棋(C ...

  6. 国王的许诺 相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中

    国王的许诺 相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1个格子中 ...

  7. MuZero:用学习模型规划玩转雅达利、围棋、国际象棋和日本将棋

    Karen Simonyan, 1 ∗ ^{1*} 1∗ Laurent Sifre, 1 , 2 ∗ ^{1,2*} 1,2∗ Simon Schmitt,1 Arthur Guez, 1 ∗ ^{ ...

  8. 【C#】枚举_结构体_数组

    最近看C#视频,关于这部分,先看了一遍,又照着敲了一遍,自己敲的过程发现了一些有意思的东西. 枚举:定义一个枚举类型的变量,这个变量有很多相同类型的值.比如性别Gender这个变量可以有男和女这两个值 ...

  9. LeetCode简单题之判断国际象棋棋盘中一个格子的颜色

    题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false ...

  10. Go 学习笔记(7)— 常量定义、常量使用、枚举用法、iota 常量、不设置初始值常量

    1. 常量定义及分类 1.1 定义 常量是指在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifie ...

最新文章

  1. hbuildx打包成apk_HBuilder打包webapp为apk的方法
  2. Codeup-问题 A: 【字符串】最长回文子串
  3. 650c公路车推荐_2020最具性价比的中高端公路整车盘点
  4. bugku 杂项 就五层你能解开吗_长春老旧小区加装电梯,你家符合条件吗?_媒体_澎湃新闻...
  5. 一篇搞懂HTTP协议
  6. QR code 二维码基础入门教程
  7. adcetris研发历程_抗体类药物质量控制—张伯彦20130730.pdf
  8. Ubuntu安装虚拟机工具(VMware Tool)详解
  9. 《解读量化投资:西蒙斯用公式打败市的故事》内容简介及PDF下载
  10. 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
  11. 2022CCPC网络预选赛题解
  12. Xcode8/iOS10 升级后遇到的问题小结
  13. 简单实现微信小程序音乐音频播放的功能
  14. uniapp结合萤石视频ezuikit.js的爬坑记录
  15. HTML5之10 __使用 Canvas API创建 热点图
  16. Vue3注册全局属性
  17. 一篇最通俗易懂的性能调优总结,这篇就够了
  18. oracle 热数据,ORACLE数据库热备份步骤解析
  19. android 关闭jack_编译Android时禁用Jack Server
  20. 316级和304级不锈钢有什么区别?

热门文章

  1. 注塑模具设计的技术知识汇总
  2. 如何找到CPU飙升的原因
  3. 如何在Word2010中查找指定文字
  4. 10001UVa伊甸园
  5. 稳定好用的短连接生成平台,支持API批量生成
  6. SpringBoot多模块项目如何扫描全局mapper接口和mapper.xml文件
  7. 转自--暗夜子羽--文章
  8. 视频转换gif动图 - 在线gif制作工具
  9. 未来规划——北京大学数院432应用统计备考攻略
  10. 【蓝牙sbc协议】sbc源码阅读笔记(二)——sbc_struct详解(下)