Problem: [Usaco2018 Open]Team Tic Tac Toe

Time Limit: 1 Sec Memory Limit: 128 MB

Description

Farmer John有26头奶牛,恰好她们名字都以不同的字母开头,所以Farmer John用每头奶牛的名字的首字母来指代她——一个A…Z之间的字母。这些奶牛最近沉迷于井字游戏,但是由于她们并不满足只有两头奶牛可以一起玩,她们改编了这个游戏,可以让许多奶牛可以一块儿玩!就像常规的井字游戏一样,这个游戏是在一块3×3的棋盘上进行的,只是与仅用X和O不同,每个格子用一个A…Z之间的字母标记,表示占有这个格子的奶牛名字的首字母。以下是一个棋盘的例子:
COW
XXO
ABC
这些奶牛会在她们迷惑于如何判断胜负之前就占满这九个格子。显然,就像常规的井字游戏一样,如果任何一头奶牛占有了一整行、一整列,或是一整条对角线,那么这头奶牛就获胜了。然而,由于奶牛认为多牛游戏中这并不容易出现,所以她们决定允许奶牛组成两牛一队,如果某一行、一列,或是一条对角线仅包含一队的两头奶牛的字母,并且同时包含了这两头奶牛(不仅仅是一头)的字母,那么这一队就获胜。
请帮助奶牛们判断有多少头奶牛或是两头奶牛组成的队伍可以获胜。
注意棋盘上的同一个格子可能在不同奶牛或队伍的获胜中均被用到。

Input

输入包含三行,每行三个A…ZA…Z之间的字符。

Output

输出包含两行。第一行,输出能够获胜的单独的奶牛的数量。
第二行,输出能够获胜的两头奶牛组成的队伍的数量。

Sample Input

COW
XXO
ABC

Sample Output

0
2
HINT
在这个例子中,没有单独的奶牛可以获得胜利。
但是,如果奶牛C和奶牛X组队,她们可以通过C-X-C对角线获胜。
同样地,如果奶牛X和O组队,她们可以通过中间一行取胜
代码如下

#include <iostream>
using namespace std;char B[3][3];// Does 1 cow win?
int cow_wins(char ch) {// Check diagonalsif (B[0][0] == ch && B[1][1] == ch && B[2][2] == ch) return 1;if (B[0][2] == ch && B[1][1] == ch && B[2][0] == ch) return 1;// Check rows and columnsfor (int i=0; i<3; i++) {if (B[0][i] == ch && B[1][i] == ch && B[2][i] == ch) return 1;if (B[i][0] == ch && B[i][1] == ch && B[i][2] == ch) return 1;}return 0;
}// Test if a team wins based on 3 characters in a row, column, or diagonal
bool check3(char ch1, char ch2, char a, char b, char c) {// All 3 characters have to be either ch1 or ch2if (a != ch1 && a != ch2) return false;if (b != ch1 && b != ch2) return false;if (c != ch1 && c != ch2) return false;// ch1 and ch2 have to appear at least once eachif (a != ch1 && b != ch1 && c != ch1) return false;if (a != ch2 && b != ch2 && c != ch2) return false;return true;
}// Does a team win?
int team_wins(char ch1, char ch2) {// Check diagonalsif (check3(ch1, ch2, B[0][0], B[1][1], B[2][2])) return 1;if (check3(ch1, ch2, B[0][2], B[1][1], B[2][0])) return 1;// Check rows and columnsfor (int i=0; i<3; i++) {if (check3(ch1, ch2, B[0][i], B[1][i], B[2][i])) return 1;if (check3(ch1, ch2, B[i][0], B[i][1], B[i][2])) return 1;}return 0;
}int main(void) {for (int i=0; i<3; i++)for (int j=0; j<3; j++)cin >> B[i][j];int answer1 = 0, answer2 = 0;for (char ch = 'A'; ch <= 'Z'; ch++)answer1 += cow_wins(ch);for (char ch1 = 'A'; ch1 <= 'Z'; ch1++)for (char ch2 = ch1+1; ch2 <= 'Z'; ch2++)answer2 += team_wins(ch1, ch2);cout << answer1 << "\n" << answer2 << "\n";return 0;
}

Problem: [Usaco2018 Open]Team Tic Tac Toe相关推荐

  1. python二维游戏示例_Python实现的井字棋(Tic Tac Toe)游戏示例

    本文实例讲述了Python实现的井字棋(Tic Tac Toe)游戏.分享给大家供大家参考,具体如下: 说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码 ...

  2. python游戏代码运行不了_无法使我的tic tac toe游戏在python中正确运行

    转不到"玩家1"的原因是你的支票中缺少一个空格.你也没有正确地检查一个玩家何时获胜,这就是为什么你会有这种奇怪的行为.你需要检查每个位置,而不仅仅是最后一个.我还添加了对用户输入的 ...

  3. react中使用构建缓存_通过在React中构建Tic Tac Toe来学习ReasonML

    react中使用构建缓存 3. 7. 2018: UPDATED to ReasonReact v0.4.2 3. 7. 2018:更新为ReasonReact v0.4.2 You may have ...

  4. Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy

    1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputin ...

  5. amazon.设计1. tic tac toe

    //不觉中 已经全力找工作好久好久了.大概有1年半了.身心疲惫,不要放弃.曙光快来了. 1.tic tac toe //http://www.ntu.edu.sg/home/ehchua/progra ...

  6. python井字棋ai,python 井字棋(Tic Tac Toe)

    说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码也是本人逐字逐句敲的. minimax算法还没完全理解,所以参考了这里的代码,并作了修改. 特点 可以选 ...

  7. python井字棋游戏代码_Python实现的井字棋(Tic Tac Toe)游戏示例

    Python实现的井字棋(Tic Tac Toe)游戏示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python实现的井字棋(Tic Tac Toe)游戏示 ...

  8. C++ 很有趣:编写一个井字游戏 (Tic Tac Toe)

    英文原文:C++ is fun: Writing a Tic Tac Toe Game 这个有趣的C++系列打算展示一下使用C++写代码可以和其他主流语言一样高效而有趣.在第二部分,我将向你展示使用C ...

  9. 圈叉游戏 java_【炫光圈叉棋】炫光圈叉棋 Tic Tac Toe Glow 1.8.1下载_安卓(android)软件下载-魅族溜...

    一款炫光风格的圈叉棋游戏,支持单/双人模式.圈叉棋,英文:tic-tac-toe,别名:圈叉游戏.是一种游戏,3*3的9个方格子,先下者画圈,后下者画叉,每人可以在任意没有对方棋子的封闭方格里下一次, ...

  10. java tic tac toe_请问我这个tic tac toe的游戏代码的问题在哪里

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Scanner in = new Scanner(System.in); final int SIZE =3; int[][] board = new i ...

最新文章

  1. redis.conf配置文件参数说明
  2. 人均年薪400万、公司年亏40亿,正在盖大楼的DeepMind最新财务数据曝光
  3. 探秘Spring AOP (六) Spring AOP 实现原理 1
  4. Zephyr内核到1.5版本的改进
  5. SQLite 表达式(http://www.w3cschool.cc/sqlite/sqlite-expressions.html)
  6. Arduino笔记-9110风扇模块的使用
  7. 2019福建省c语言知识点,2019最新C语言知识整理(干货)
  8. 做游戏,学编程(C语言) 8 英雄联盟连连看
  9. 谈谈基于SQL Server 的Exception Handling[中篇]
  10. Child module pom.xml of pom.xml does not exist @
  11. 相关性分析的五种方法
  12. matlab求极限趋近0,matlab求极限和导数
  13. nvm use报错exit status 1解决方法
  14. c# forbidden.html,C#Web API方法返回403 Forbidden
  15. python word.documents.open报错_Python教程:[43]Word基本操作
  16. MongoDB3.4 根据中文拼音给中文排序
  17. android 通知权限设置在哪,Android 打开消息通知权限
  18. eclipse如何attach source?
  19. 字符串低位优先排序(LSD)和高位优先排序(MSD)原理及C++实现
  20. js全屏和退出全屏代码

热门文章

  1. 不懂技术怎么让服务器更安全,几个插件让你的服务器更安全(防攻击防注入)
  2. 不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动
  3. 李彦宏遭遇“泼水门”,气质淡定冲上热搜
  4. 水花兄弟又凑齐了(20220111 Week2-1)
  5. .NetCore异常:Could not load file or assembly ‘Microsoft.AI.Web‘ or one of its dependencies. The system
  6. 酷睿i5 1235u参数 i5 1235u处理器怎么样
  7. 学习zencart模板制作
  8. 老徐WEB:js入门学习 - javascript对象之Date对象
  9. mybatis插入大于号小于号到oracle
  10. python笔记005-字符串-列表-元组