题面:

题目大意:

现在有26头牛(A~Z)在玩一个井字棋游戏,但是他们做了一个改进,可以使两个以上的牛参与进来。那就是两种不同的牛可以组成一队,如果他们组队后行、列或对角线只由这两种牛组成,那么算这一队赢。
要你算出不组队下有多少种牛能赢,组队后有多少种情况能赢(组队的两头牛一定不是相同类的!)

思路:

模拟题,但是细节很多。
赢的情况一共有8种,2个对角线,三个行,三个列。
1.不组队下,相同的字母组成多个赢的条件(行、列、对角线)只算一种
如:
XXX
XXX
XXX
只算一种
2.组队条件下,只有赢的条件(行、列、对角线)中包含两种牛才算

XXX
XDF
XFR
无论哪两个组队,都不能赢。

暴力模拟就行,详见代码。

ac丑代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include <vector>
#include<algorithm>
using namespace std;
typedef long long ll;
#define MAX 100000
#define INF 10000000
struct jin{char N[4][4];
}temp;
int vis[26];
char v[26];
int c(jin a)//
{memset(vis,0,sizeof(vis));int ret = 0;char ch;for(int i = 0;i<3;i++){int sum = 0;ch = a.N[i][0];for(int j = 0;j<3;j++)//行{if(ch == a.N[i][j])sum++;}if(sum == 3 && !vis[ch-'A']){ret++;vis[ch-'A'] = 1;}sum = 0;ch = a.N[0][i];for(int j = 0;j<3;j++)//列{if( ch == a.N[j][i])sum++;}if(sum == 3 && !vis[ch-'A']){ret++;vis[ch-'A'] = 1;}}ch = a.N[1][1];if(a.N[0][0] == a.N[1][1] && a.N[1][1] == a.N[2][2] &&(!vis[ch-'A']))//主对角线{ret++;vis[ch-'A'] = 1;}if(a.N[0][2] == a.N[1][1] && a.N[1][1] == a.N[2][0] &&(!vis[ch-'A']))ret++;//副对角线return ret;
}
int C(jin a,char x,char y)
{int x1,x2;for(int i = 0;i<3;i++){x1 = 0,x2 = 0;for(int j = 0;j<3;j++){if(x == a.N[i][j])x1++;else if(y == a.N[i][j])x2++;}if(x1 && x2 && x1+x2 == 3)return 1;x1 = 0,x2 = 0;for(int j = 0;j<3;j++){if(x == a.N[j][i])x1++;else if(y == a.N[j][i])x2++;}if(x1 && x2 && x1+x2 == 3)return 1;}//主对角线x1 = 0,x2 = 0;for(int i = 0;i<3;i++){if(a.N[i][i] == x)x1++;else if(a.N[i][i] == y)x2++;}if(x1 && x2 && x1+x2 == 3)return 1;x1 = 0,x2 = 0;//副对角线for(int i = 0;i<3;i++){if(a.N[i][3-i-1] == x)x1++;else if(a.N[i][3-i+1] == y) x2++;}if(x1 && x2 && x1+x2 == 3)return 1;return 0;
}
int main()
{int sum = 0,ans = 0;for(int i = 0;i<3;i++){scanf("%s",temp.N[i]);for(int j = 0;j<3;j++){int x = temp.N[i][j]-'A';if(!vis[x])//不同的字母存入数组{vis[x] = 1;v[sum++] = x+'A';}}}int ori = c(temp);printf("%d\n",ori);for(int i = 0;i<sum;i++){for(int j = i+1;j<sum;j++){ans += C(temp,v[i],v[j]);}}printf("%d\n",ans);return 0;
}

【USACO】Team Tic Tac Toe(C题)相关推荐

  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. www服务器提供的第一个信息页面,第14章WWW服务
  2. python redis 订阅发布_Python-Redis的发布与订阅
  3. c语言程序设计指针进阶,C语言及程序设计进阶例程-15 指向结构体的指针
  4. Java读取模板文件您好,RtfTemplate 读取word模板生成文件
  5. 高考成绩查询接口(转)
  6. 企业级开源电商系统5vShop商城系统源码v1.9.5
  7. linux应用调用内核函数,Hooking linux内核函数(一):寻找完美解决方案
  8. 花式上分算法大赛,速看鹅厂六强团队解题思路集锦【附PPT下载】
  9. Windows域策略设置 禁止客户端修改IP地址【全域策略生效】
  10. 逆向路由器固件之敏感信息泄露 Part2
  11. JavaScript学习——JavaScript 循环
  12. Cocos2d-x-使用脚本概述
  13. iptables实战系列:通过NAT转发实现私网对外发布信息
  14. javascript 自建立对象
  15. linux安装软件的方式
  16. ResNet 残差神经网络(小白版)
  17. kodi文件管理smb服务器,KODI+NAS的常见技巧
  18. ORA-01722:invalid number
  19. pentaho开源商业智能平台的搭建
  20. 关于随机数,真随机,伪随机

热门文章

  1. pdf转换器中文版下载
  2. 聊一聊那些应该了解的大佬(飞控,人工智能方向)
  3. 编译支持mp3的sox
  4. Android屏幕亮度调节
  5. Python编写随机一百个人的姓名,加面试考核得分
  6. 页面html背景图片居中显示文字,DIV+CSS中让布局、背景图片、文字内容居中的方法...
  7. 来自福布斯富豪榜马总的建议,为什么一定要学Python?
  8. 塑料填充母粒行业调研报告 - 市场现状分析与发展前景预测
  9. 安搭Share:霜降来,寒意到
  10. Python中参数前面的星号