首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

04:围棋

总时间限制: 1000ms内存限制: 65536kB描述围棋的棋盘上有19*19条线交织成的361个交点,黑棋和白棋可以下在交点上。我们称这些交点为“目”。...一个目的上下左右四个方向,称之为“气”,如果一个目的四个方向都被某一种颜色的棋子占据,那么即使这个目上并没有棋子,仍然认为这个目被该颜色棋子占据。...不用考虑某些棋子按照围棋规则实际上是死的,以及互相吃(打劫),双活等情况。...输入第一行,只有一个整数N(1<=N<=100),代表棋盘的尺寸是N * N 第2~n+1行,每行n个字符,代表棋盘上的棋子颜色。...“.”代表一个没有棋子的目 “B”代表黑棋 “W”代表白棋 输出只有一行,包含用空格分隔的两个数字,第一个数是黑棋的目数,第二个数是白棋的目数。 样例输入 4 ..BW ...B .... ....

1K90
您找到你想要的搜索结果了吗?
是的
没有找到

05-06-设计模式 享元模式

FlyWeightFactory享元工厂类,用于构建一个池容器(集合),同时提供从池中获取对象方法 内部状态和外部状态 比如围棋、五子棋、跳棋,它们都有大量的棋子对象,围棋和五子棋只有黑白两色,跳棋颜色多一点...,所以棋子颜色就是棋子的内部状态;而各个棋子之间的差别就是位置的不同,当我们落子后,落子颜色是定的,但位置是变化的,所以棋子坐标就是棋子的外部状态 享元模式提出了两个要求:细粒度和共享对象。...举个例子:围棋理论上有361个空位可以放棋子,每盘棋都有可能有两三百个棋子对象产生,因为内存空间有限,一台服务器很难支持更多的玩家玩围棋游戏,如果用享元模式来处理棋子,那么棋子对象就可以减少到只有两个实例...代码实现 package com.flower.xiangyuan; import lombok.AllArgsConstructor; import lombok.Data; import java.util.HashMap...; import java.util.Map; import java.util.Optional; public class TestMain { public static void main

25710

图解Java设计模式之享元模式

UnSharedConcreteFlyWeight是不可共享的角色,一般不会出现在享元工厂 4)FlyWeightFactory享元工厂类,用于构建一个池容器(集合),同时提供从池中获取对象方法 内部状态和外部状态 比如围棋...、五子棋、跳棋,它们都有大量的棋子对象,围棋和五子棋只有黑白两色,跳棋颜色多一点,所以棋子颜色就是棋子的内部状态;而各个棋子之间的差别就是位置的不同,当我们落子后,落子颜色是定的,但位置是变化的,所以棋子坐标就是棋子外部状态...4) 举个例子:围棋理论上有361个空位可以放棋子,每盘棋都有可能有两三百个棋子对象产生,因为内存空间有 限,一台服务器很难支持更多的玩家玩围棋游戏,如果用享元模式来处理棋子,那么棋子对象就可以减少到只有两个实例...使用者是 " + user.getName()); } } package com.example.demo.flyweight; import java.util.HashMap; import...java.util.Map; import javax.activation.MailcapCommandMap; /** * 网站工厂类,根据需要返回一个网站 * @author zhaozhaohai

99620

AlphaGo之父:关于围棋,人类3000年来犯了一个错

围棋使用方形格状棋盘及黑白二色圆形棋子进行对弈,棋盘上有纵横各19条直线将棋盘分成361个交叉点,棋子走在交叉点上,双方交替行棋,以围地多者为胜。围棋规则没有多复杂,我可以在五分钟之内教给大家。...我们能否做出一个算法来与世界围棋冠军竞争呢?要做到这一点,有两个大的挑战: 一、搜索空间庞大(分支因数就有200),一个很好的例子,就是在围棋中,平均每一个棋子有两百个可能的位置,而象棋仅仅是20....所有的这些在围棋里都是不可能的,并不是所有的部分都一样,甚至一个小小部分的变动,会完全变化格局,所以每一个小的棋子都对棋局有着至关重要的影响。...最难的部分是,我称象棋为毁灭性的游戏,游戏开始的时候,所有的棋子都在棋盘上了,随着游戏的进行,棋子被对方吃掉,棋子数目不断减少,游戏也变得越来越简单。...其实在围棋中有两条至关重要的分界线,从右数第三根线。如果在第三根线上移动棋子,意味着你将占领这个线右边的领域。

89370

黑白世界 — 围棋

近日浙江乌镇的 AlphaGo 人机围棋大战打的轰轰烈烈,AlphaGo 背后的蒙特卡罗树搜索算法也炒得沸沸扬扬。今天我们介绍几个跟围棋(Go)有关的 Wolfram 演示项目。...围棋起源于中国,迄今已有数千年历史,传说为 "尧帝" 所发明,在春秋战国时已有记载。后来,"琴棋书画" 被称为中国古代的 "四艺",其中的 "棋",就指围棋。...到了现代,围棋依然是重要的中国文化符号之一,也被认为是世界上 "最复杂的棋艺"。...如果你没有安装 Mathematica,可以去官网下载免费的 CDF Player(https://www.wolfram.com/cdf-player/)来玩这个围棋游戏。...(http://demonstrations.wolfram.com/OverlappingGoGames/) 小编在网上看到大家有讨论三维围棋和球面围棋,如果你们有源代码,也欢迎与我们共享噢!

91120

棋盘上的数学里程碑

公元前548年:围棋 ? 围棋大约是公元前2000年源自于中国的双人棋弈,最早提到有关于围棋的历史记载是一本叫做《左传》的中国叙事古藉,当中提到公元前548年有个人下围棋的故事。...围棋是由两位分别持黑子跟白子的玩家,在一个19x19的横盘上对弈,当某一方的棋子完全被另一方的棋子包围时,就要从棋盘上把被围住的棋子通通移除,游戏目的是尽可能比对手掌握更大的棋盘范围。...有很多因素可以说明围棋的复杂程度,像大范围的其盘、层出不穷的策略运用,以及大量又变化多端的对弈过程。所以,单单设法在棋盘上摆上比对手更多的棋子并不能保证获胜。...不过,最厉害的围棋软件却往往会输给一位受过围棋训练的小朋友。 下围棋的计算机很难做到“先多想几步后”再作出判断。...西洋跳棋的棋子通常是黑红两色的圆盘,棋子只能走斜线;两位玩家轮流下棋,只要跳过对手的棋子就能吃掉它。

72730

这就是享元模式!

享元模式的应用实例 “某软件公司要开发一个围棋软件,其界面效果如下图所示: 围棋软件界面效果图 “该软件公司开发人员通过对围棋软件进行分析发现,在图中,围棋棋盘中包含大量的黑子和白子,它们的形状、大小都一模一样...如果将每一个棋子都作为一个独立的对象存储在内存中,将导致该围棋软件在运行时所需内存空间较大,如何降低运行代价、提高系统性能是需要解决的一个问题。...为了解决该问题,现使用享元模式来设计该围棋软件的棋子对象。...实例类图 实例代码 IgoChessman:围棋棋子类,充当抽象享元类 BlackIgoChessman:黑色棋子类,充当具体享元类 WhiteIgoChessman:白色棋子类,充当具体享元类 IgoChessmanFactory...nateshao.gitee.io * @GitHub https://github.com/nateshao * @Gitee https://gitee.com/nateshao * Description: 围棋棋子

55620

DeepMind创始人:AlphaGo破解围棋3000年奥义,超越人类认知极限

围棋使用方形格状棋盘及黑白二色圆形棋子进行对弈,棋盘上有纵横各19条直线将棋盘分成361个交叉点,棋子走在交叉点上,双方交替行棋,以围地多者为胜。围棋规则没有多复杂,我可以在五分钟之内教给大家。...要做到这一点,有两个大的挑战: 一、搜索空间庞大(分支因数就有200),一个很好的例子,就是在围棋中,平均每一个棋子有两百个可能的位置,而象棋仅仅是20. 围棋的分支因数远大于象棋。...所有的这些在围棋里都是不可能的,并不是所有的部分都一样,甚至一个小小部分的变动,会完全变化格局,所以每一个小的棋子都对棋局有着至关重要的影响。...最难的部分是,我称象棋为毁灭性的游戏,游戏开始的时候,所有的棋子都在棋盘上了,随着游戏的进行,棋子被对方吃掉,棋子数目不断减少,游戏也变得越来越简单。...图左:第二局里,第37步,黑棋的落子位置 图右:之前貌似陷入困境的两个棋子 其实在围棋中有两条至关重要的分界线,从右数第三根线。如果在第三根线上移动棋子,意味着你将占领这个线右边的领域。

1.3K40

搜索专题1 | 棋子摆放 POJ - 1321

题目描述: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子棋子没有区别。...要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。...每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。n <= 8 , k <= n 当为-1 -1时表示输入结束。...本题中是搜索棋盘可以放置的棋子棋子不能够在同一行或者同一列,然后还可能有障碍物不能放置棋子。示意图大概如下: ? 从位置0-0开始,每次DFS到下一行,每次回溯的时候会还原当前记录的数量值cnt。...注意对于每一行来说可以不用放置棋子。 ?

48420

当AI遇上量子计算:神经网络量子纠错系统或超越传统纠错策略

2016年,人工智能程序AlphaGo在围棋比赛中击败了世界上最强的人类棋手,举世瞩目。鉴于一局围棋中的移动组合比估计的宇宙中的原子的数量更多,它需要的不仅仅是处理能力。...量子纠错就像一场规则奇特的围棋游戏 Marquardt在介绍该研究的工作原理时提出了一个有趣的类比,他说:“你可以把量子计算机的元素想象成一块围棋棋盘,量子比特像棋子一样分布在整个棋盘上。”...但是,与传统的围棋游戏相比有一些关键的区别:所有棋子都已经排列在棋盘上,而且每一枚棋子都是一面是白色一面黑色。一种颜色对应0,另一种颜色对应1,并且量子围棋游戏中的移动相当于将棋子翻过来。...根据量子世界的规则,棋子也可以是黑白混合在一起的灰色——代表量子态的叠加和纠缠。 在玩这个量子围棋游戏时,玩家——让我们称她为Alice——做出的动作是为了保留代表某种量子态的模式。...在作为类比的量子围棋游戏中,辅助量子比特由在实际游戏棋子之间分布的辅助棋子来表示。Alice可以偶尔看一眼,但只能看这些辅助棋子。 在这个研究中,Alice的角色由人工神经网络完成。

57520

黑白世界 — 围棋

近日浙江乌镇的 AlphaGo 人机围棋大战打的轰轰烈烈,AlphaGo 背后的蒙特卡罗树搜索算法也炒得沸沸扬扬。今天我们介绍几个跟围棋(Go)有关的 Wolfram 演示项目。...围棋起源于中国,迄今已有数千年历史,传说为 "尧帝" 所发明,在春秋战国时已有记载。后来,"琴棋书画" 被称为中国古代的 "四艺",其中的 "棋",就指围棋。...到了现代,围棋依然是重要的中国文化符号之一,也被认为是世界上 "最复杂的棋艺"。...如果你没有安装 Mathematica,可以去官网下载免费的 CDF Player(https://www.wolfram.com/cdf-player/)来玩这个围棋游戏。...(http://demonstrations.wolfram.com/OverlappingGoGames/) 小编在网上看到大家有讨论三维围棋和球面围棋,如果你们有源代码,也欢迎与我们共享噢!

91740

人工智能力助量子误差矫正

该研究受2016年围棋计算机系统AlphaGo的启发,尝试利用神经网络算法进行量子误差校正。...,量子计算机还具有一种灰色的表示叠加量子位的“棋子”,而且这些表示量子位的“棋子”已经摆放在棋盘上。...“量子围棋游戏”还有一条特殊规则,当你在移动棋子实现量子误差校正时是不知道“棋盘”上的状态的,因此量子误差校正的目的可以抽象成如何在这样一种奇怪的“棋局规则”下,将“棋子”移动到正确的位置。...通过监控这些辅助量子位,量子计算机的控制器就能定位错误并进行相应的矫正,类比在“量子围棋游戏”中,辅助量子位就是一些分布在实际棋子之间的附加棋子,棋手只能通过观察这些附加棋子来决定实际棋子的下一步走法。...类比在“量子围棋游戏”中,该奖励机制可以在不透露“棋局”细节的情况下在特定时间对“棋手”进行游戏状态提示。

42920

从深蓝到 AlphaGo丨AI 在游戏领域的升级打怪之路

一旦跳棋算法发现能够吃掉对手棋子的棋步,然后就停止了,就按这个棋步走。这种简单的启发法足以攻克跳棋。 扑克牌丨Poker 接下来,AI面对的是扑克牌游戏。...但这实际低估了围棋的复杂性,因为围棋棋子不是放在网格中,而是放在四个角上。也就是说每个网格代表四种可能的位置,即与周围网格的交叉点。总而言之,围棋中的棋步组合比宇宙中原子数量还多。...其次,围棋中每个棋子都同等重要。 这与国际象棋不同,比如国际象棋中,后就比兵要重要。这种关系是可以通过编程让AI理解的,比如输入生产系统。但是围棋棋子的价值取决于,各个棋子在棋盘位置的相互关系。...围棋的目标是用在对弈过程中,以双方棋子所围"地"的大小决定胜负,所以每次棋步都是很主观的。甚至高水平的棋手有时也很难解释,他们是如何判断每个棋步和好坏。...并不是对一个个棋子的位置进行计算,而是通过寻找棋盘中的模式。 如同面部识别系统会搜寻眼睛、鼻子、嘴等图像。AlphaGo寻找提供强大或薄弱战术的棋子模式。但它要如何明确什么会带来有力或不利的局面呢?

1.3K80

DeepMind再登Science!AI「破壁者」玩心机吊打人类大师

以往,许多科学家会用国际象棋和围棋训练AI,而DeepMind这次用的Stratego,是一款经典的棋盘游戏,要比国际象棋和围棋更复杂,比扑克更巧妙。...与国际象棋和围棋的不同之处在于,Stratego是一种不完全信息博弈:玩家无法直接观察对手棋子的身份。...只有遭遇其他玩家时,对方棋子的身份才会显露出来。 而国际象棋和围棋的不同之处在于,它们是「完美信息博弈」,因为对战双方确切地知道每一颗棋子的位置和身份。...国际象棋、扑克、围棋和Strateg之间的规模差异 而且,与国际象棋、围棋和扑克牌相比,可能的博弈状态数量(「博弈树复杂性」)已经超出了图表,解决起来更是异常困难。...相比之下,围棋的布局也只有10的360次方种可能。 其次,在Stratego中,人工智能需要推理对手超过10的66次方种部署策略,而扑克只有一千种可能出现的牌对。

55820

人工智能力助量子误差矫正

该研究受2016年围棋计算机系统AlphaGo的启发,尝试利用神经网络算法进行量子误差校正。...,量子计算机还具有一种灰色的表示叠加量子位的“棋子”,而且这些表示量子位的“棋子”已经摆放在棋盘上。...“量子围棋游戏”还有一条特殊规则,当你在移动棋子实现量子误差校正时是不知道“棋盘”上的状态的,因此量子误差校正的目的可以抽象成如何在这样一种奇怪的“棋局规则”下,将“棋子”移动到正确的位置。...通过监控这些辅助量子位,量子计算机的控制器就能定位错误并进行相应的矫正,类比在“量子围棋游戏”中,辅助量子位就是一些分布在实际棋子之间的附加棋子,棋手只能通过观察这些附加棋子来决定实际棋子的下一步走法。...类比在“量子围棋游戏”中,该奖励机制可以在不透露“棋局”细节的情况下在特定时间对“棋手”进行游戏状态提示。

54440

设计模式的征途—12.享元(Flyweight)模式

享元模式(Flyweight) 学习难度:★★★★☆ 使用频率:★☆☆☆☆ 一、围棋棋子的设计 M公司开发部欲开发一个围棋软件,其界面效果如下图所示: ?   ...M公司开发人员通过对围棋软件进行分析,发现在围棋棋盘中包含大量的黑子和白子,它们的形状、大小都一模一样,只是出现的位置不同而已。...如果将每一个棋子都作为一个独立的对象存储在内存中,将可能导致该围棋软件在运行时所需要的内存空间较大。   如何降低运行代价、提高系统性能是M公司开发人员需要解决的一个问题。...三、重构后的围棋棋子方案 3.1 重构后的设计   M公司开发人员采用了享元模式进行设计,如下图所示: ?   ...从运行结果可以看出,在每次调用Display()方法时,都设置了不同的外部状态-坐标值,因此相同的棋子虽然具有相同的颜色,但是它们的坐标值不同,将显示在棋盘的不同位置。

54730
领券