【USACO】Team Tic Tac Toe(C题)
题面:
题目大意:
现在有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题)相关推荐
- python二维游戏示例_Python实现的井字棋(Tic Tac Toe)游戏示例
本文实例讲述了Python实现的井字棋(Tic Tac Toe)游戏.分享给大家供大家参考,具体如下: 说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码 ...
- python游戏代码运行不了_无法使我的tic tac toe游戏在python中正确运行
转不到"玩家1"的原因是你的支票中缺少一个空格.你也没有正确地检查一个玩家何时获胜,这就是为什么你会有这种奇怪的行为.你需要检查每个位置,而不仅仅是最后一个.我还添加了对用户输入的 ...
- 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 ...
- 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 ...
- amazon.设计1. tic tac toe
//不觉中 已经全力找工作好久好久了.大概有1年半了.身心疲惫,不要放弃.曙光快来了. 1.tic tac toe //http://www.ntu.edu.sg/home/ehchua/progra ...
- python井字棋ai,python 井字棋(Tic Tac Toe)
说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码也是本人逐字逐句敲的. minimax算法还没完全理解,所以参考了这里的代码,并作了修改. 特点 可以选 ...
- python井字棋游戏代码_Python实现的井字棋(Tic Tac Toe)游戏示例
Python实现的井字棋(Tic Tac Toe)游戏示例 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python实现的井字棋(Tic Tac Toe)游戏示 ...
- C++ 很有趣:编写一个井字游戏 (Tic Tac Toe)
英文原文:C++ is fun: Writing a Tic Tac Toe Game 这个有趣的C++系列打算展示一下使用C++写代码可以和其他主流语言一样高效而有趣.在第二部分,我将向你展示使用C ...
- 圈叉游戏 java_【炫光圈叉棋】炫光圈叉棋 Tic Tac Toe Glow 1.8.1下载_安卓(android)软件下载-魅族溜...
一款炫光风格的圈叉棋游戏,支持单/双人模式.圈叉棋,英文:tic-tac-toe,别名:圈叉游戏.是一种游戏,3*3的9个方格子,先下者画圈,后下者画叉,每人可以在任意没有对方棋子的封闭方格里下一次, ...
- java tic tac toe_请问我这个tic tac toe的游戏代码的问题在哪里
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Scanner in = new Scanner(System.in); final int SIZE =3; int[][] board = new i ...
最新文章
- www服务器提供的第一个信息页面,第14章WWW服务
- python redis 订阅发布_Python-Redis的发布与订阅
- c语言程序设计指针进阶,C语言及程序设计进阶例程-15 指向结构体的指针
- Java读取模板文件您好,RtfTemplate 读取word模板生成文件
- 高考成绩查询接口(转)
- 企业级开源电商系统5vShop商城系统源码v1.9.5
- linux应用调用内核函数,Hooking linux内核函数(一):寻找完美解决方案
- 花式上分算法大赛,速看鹅厂六强团队解题思路集锦【附PPT下载】
- Windows域策略设置 禁止客户端修改IP地址【全域策略生效】
- 逆向路由器固件之敏感信息泄露 Part2
- JavaScript学习——JavaScript 循环
- Cocos2d-x-使用脚本概述
- iptables实战系列:通过NAT转发实现私网对外发布信息
- javascript 自建立对象
- linux安装软件的方式
- ResNet 残差神经网络(小白版)
- kodi文件管理smb服务器,KODI+NAS的常见技巧
- ORA-01722:invalid number
- pentaho开源商业智能平台的搭建
- 关于随机数,真随机,伪随机