编程基础——函数调用

1.3:Tic Tac Toe

题目:
输入
• 输入的第一行给出N,表示测试用例的数目。然后给出
4N-1行,说明N个用空行分隔的网格图。
输出
• 对于每个测试用例,在一行中输出"yes"或"no",表示该
网格图是否是有效的三连棋游戏的一个步骤。

试题分析:

有效的三连棋一定满足如下特征:
•o的数量一定<=x的数量
•如果x的数量比o的数量多1,那么不可能o赢
•如果x和o的数量相等,则不可能是x赢。
调用fact函数判断是谁赢并返回相应的类型
根据说给的特征进行执行

注意点:
•c语言不可以返回bool类型
•三目运算符比if语句更简单
t=fact(t)?1:0 ——t是否返回相应的类型,如果是t=1,否则t=0;
二维数组可以将一维数组看成是字符串

样例:
Sample Input
2
X.O
OO.
XXX
O.X
XX.
OOO
Sample Output
yes
no

c

#include <stdio.h>
char a[3][3];
int fact(char c){//调用函数实现赢的情况 int i;for(i=0;i<3;++i){if(a[0][i]==c){if(a[1][i]==c&&a[2][i]==c) return 1;//竖排相同 }}for(i=0;i<3;++i){if(a[i][0]==c){if(a[i][1]==c&&a[i][2]==c) return 1;//横排相同 }}if(a[0][0]==c&&a[1][1]==c&&a[2][2]==c) return 1;//两条对角线相同 if(a[2][0]==c&&a[1][1]==c&&a[0][2]==c) return 1;return 0;
}
int main () {int k;scanf("%d",&k);while(k--){int i,j,t=0,m=0,n=0;for(i=0;i<3;++i) {//将二维数组以一维看成一个字符串 scanf("%s",a[i]);}for(i=0;i<3;++i){for(j=0;j<3;++j){if(a[i][j]=='X') m++;//统计每个测试用例x,o的数量 else if(a[i][j]=='O') n++; }}if(m>=n){if(m==n){t=fact('X')==1?0:1;//1为有效,0为无效 }else if(m-n==1){t==fact('O')==1?0:1;}else t=0;}else t=0;//每次结束后初始化变量 printf("%s\n",t==1?"yes":"no");//三目运算符 }return 0;
}

c++

#include <stdio.h>
char mp[3][3];
int x, o;
int flag;
char cal(char tar) { for (int i = 0; i < 3; ++i) { if (mp[0][i] == tar) { if (mp[1][i]==tar && mp[2][i]==tar) { return true; } } }for (int i = 0; i < 3; ++i) { if (mp[i][0] == tar) { if (mp[i][1]==tar && mp[i][2]==tar) { return true; } } }if (mp[0][0]==tar && mp[1][1]==tar && mp[2][2]==tar) { return true; }if (mp[0][2]==tar && mp[1][1]==tar && mp[2][0]==tar) { return true; }return false;
}int main() { int n; scanf("%d",&n); while (n--) { flag = x = o = 0; for (int i = 0; i < 3; ++i) { scanf("%s", mp[i]); }for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { if (mp[i][j] == 'X') { x++; }else if (mp[i][j] == 'O') { o++; } } }if (x >= o) { if (x == o) {flag = cal('X') ? 0 : 1; }else if (x - o == 1) { flag = cal('O') ? 0 : 1; }else {flag = 0; } }else {flag = 0; }printf("%s\n", flag==1 ? "yes" : "no"); }return 0; }

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. 波士顿动力机器狗新技能!跳绳园艺做家务,还有书法神技
  2. 怎么测内阻 恒压源_电池内阻及简单测试方法
  3. C++vector容器-容量和大小
  4. [剑指offer]面试题第[42]题[Leedcode][JAVA][第53题][最大子序和][动态规划][贪心][分治]
  5. from server sql 拼接统计两个子查询_[SQL SERVER系列]之嵌套子查询和相关子查询
  6. VS.NET 2005 BETA 2 NOT DELAYED?
  7. BlockingQueue的使用
  8. 术语html的含义是,术语html指的是什么
  9. iis php5.3 mysql_IIS7.5+PHP5.3+MYSQL5.5
  10. php批量数据提交mysql_php在mysql里批量插入数据(代码实例)
  11. 无法启用数据库中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。...
  12. 使用PuttyGen和TortoiseGit进行Clone with SSH
  13. C语言社区水电费管理系统,C语言水电费管理系统.doc
  14. 阿正入门深度学习---从EM算法开始
  15. Mac升级自带PHP版本(非Homebrew方式)
  16. 计算机不通电维修,显示器不通电维修教程
  17. 阿拉伯数字和汉字对照表
  18. 如何学习 C++ 如何学习一门较复杂的编程语言 【转】
  19. International Classification for Standards 国际标准分类号
  20. 数据采集及传输名词解释——比特率、波特率、码率、帧率

热门文章

  1. 个人申请美国B1/B2商旅签证的完整流程
  2. zoj 3551 Bloodsucker 概率DP
  3. java中not equal_Java ObjectUtils.notEqual方法代码示例
  4. 腾讯北大合作的稀疏大模型训练加速方案HET入选国际顶会VLDB
  5. 红米8.0系统手机(亲测有效)激活xposed框架的经验
  6. html+css 炫彩流光按钮
  7. Spark 学习笔记——001【spark-mysql+spark-hive】
  8. 《内功修炼系列》之-递归从入门到入土(收藏版)
  9. Ouroboros:A Provably Secure Proof-of-Stake Blockchain Protocol 学习总结
  10. Pisces-Mini-Program 微信QQ通用Typecho小程序