#P1568. Find the Winning Move
Find the Winning Move
本题没有可用的提交语言。
描述
井字游戏在四行(从上到下编号0到3)和四列(从左到右编号到)的棋盘上玩。有两个玩家,和,他们交替移动,总是先走。第一个在同一行、同列或同对角线上得到他或她的四个棋子的玩家获胜。如果棋盘是满的,双方都没有赢,那么游戏是平局。
假设轮到走了,如果能走一步,不管在剩下的游戏中走了什么,都能赢,那么就可以说是被迫赢了。这并不一定意味着会在下一步中获胜,尽管这是一种可能性。这意味着有一个制胜策略,无论做什么,都能保证最终的胜利。
你的任务是编写一个程序,给定一个部分完成的游戏,下一步移动,将确定是否有强制获胜。你可以假设每个玩家都至少走了两步棋,游戏还没有被任何玩家获胜,棋盘也没有满。
Input
输入包含一个或多个测试用例,后面跟着以美元符号开始的行,表示文件的结束。每个测试用例以包含问号的一行开始,后面是代表电路板的四行;格式化完全如示例所示。在棋盘描述中使用的字符是句点(表示空格),小写和小写。对于每个测试用例,输出一行包含第一次强制获胜的位置(行,列),或者‘#####’,如果没有强制获胜。按照示例中所示的方式格式化输出。
输出
对于这个问题,第一次强制获胜是由棋盘位置决定的,而不是获胜所需的移动数量。通过检查、、、、、、…,,,并输出您找到的第一个强制胜利。在下面的第二个测试用例中,请注意,可以通过在或处进行操作来立即获胜,但在处进行操作仍然可以确保胜利(尽管不必要地延迟了它),并且位置首先出现。
?
....
.xo.
.ox.
....
?
o...
.ox.
.xxx
xooo
$
#####
(0,1)
来源
美国中南部1999