C++ 刽子手游戏(Hangman Judge, UVa 489)(算法竞赛入门经典例题4-2)
题目:刽子手游戏是一个简单的猜单词游戏,每次可以猜一个字母,如果单词内有这个字母,此单词内所有该字母都会显示,如果没有该字母,则记一笔错误,若满7笔错误,则输掉()猜已经猜出的单词也算错误)。本题编写一个裁判程序,题目要求玩家输入三行,第一行是游戏回合数,第二行是答案单词,第三行是玩家猜测单词,判断玩家赢了、输了、或放弃了。
题目解析:题意大致理解为对一个猜测的字符数组中的字母进行判断,是否是答案单词中有的。比如答案单词是cheese,猜测单词是chese,则赢了,因为猜测序列在猜错7次前将答案中所有的字母都找到了。
思路:创立全局变量chance和num分别代表还存在的猜测机会和仍需猜测的字母数量,在chance>0的时候作循环判断是否将答案的字母都猜到了,每猜到则num--直至num=0(赢了),或者chance=0(输了)。当然若chance!=0且num!=0却猜测结束时意味着玩家在还有机会的时候没有继续猜测,则放弃。
代码如下,以通过vj测试!
#include<iostream>
#include<string.h>
using namespace std;
#define maxn 1000
char s1[maxn], s2[maxn]; //答案串、玩家猜测串
int num, chance, flag; //全局变量:计算需要猜的个数,还能猜的次数void guess(char*s1,char*s2)
{for (int i = 0; i < strlen(s2); i++){if (strchr(s1, s2[i]) != NULL){for (int k = 0; k < strlen(s1); k++){if (s1[k] == s2[i]){s1[k] = ' '; //猜到的字母赋0num--;if (num == 0)break;}}if (num == 0)break;}elsechance--;if (chance == 0)break;}if (num == 0 && chance > 0){cout << "You win." << endl;flag = 1;}else if (chance == 0){cout << "You lose." << endl;flag = 1;}}int main()
{int n;while (cin >> n){if (n == -1)return 0;flag = 0;cin >> s1 >> s2;num = strlen(s1); //还需要猜的字母个数chance = 7; //当chance为0时lose;当num为0而chance不为0时win;当chance不为0而num也不为0是chickened outcout << "Round " << n << endl;guess(s1, s2);if (flag)continue;elsecout << "You chickened out." << endl;}return 0;
}
C++ 刽子手游戏(Hangman Judge, UVa 489)(算法竞赛入门经典例题4-2)相关推荐
- 古老的密码(Ancient Cipher,UVa1339)(算法竞赛入门经典 例题4-1)C++
题目:给定两个不超过100的字符串,判断是否可以做到将其中一个字符串通过重排和映射的操作,使得两个字符串相同.例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,然后每个字母只要通过一次映射 ...
- 算法竞赛入门经典 例题6-6 小球下落(python、C)
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从上到下从左到右编号为 1,2,3,- , ...
- 算法竞赛入门经典 例题6-2 铁轨(C、python)
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为 1~n .你的任务 ...
- 算法竞赛入门经典 例题6-21
UVa506 System Dependencies 编写程序实现类似Linux下的软件包管理器,其工作方式为: 可以通过命令显式安装组件,这个过程也可能隐式安装依赖组件 如果没有其它组件仍然依赖一个 ...
- 算法竞赛入门经典 例题6-16
刷题荒废了一个多月,今日了却一件事情,把此题补上! UVa10129 Play on Words 有若干个圆盘,每个圆盘上都有一个单词,判断这些圆盘是否能排成一排,使得相邻圆盘的首尾字母相同. 3年前 ...
- Java实现算法竞赛入门经典例题-蚂蚁
问题描述 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒. 当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计). 给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂 ...
- UVA-814 邮件传输代理的交互 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 #include<iostream> #include< ...
- UVA-12171 雕塑 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这道题目在<算法竞赛入门经典第二版>书中标注了星号,也是第一道出现星号的 ...
- UVA-1598 交易所 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 有意思的一个题目.书上说这是一个不错的优先队列练习题,但实际上它其实是一个 ...
最新文章
- 小程序十一:网络请求
- Python科学计算扩展库NumPy之np.array()与np.asarray()区别
- GMIS 2017大会Wesly Mukai演讲:智能运输的未来
- 【python】队列——用顺序表实现队列操作
- C++单链表的建立和遍历
- 理解Go Interface
- 2020将至,谈谈中小企业创业的那些事儿
- Blazor编辑表单状态控件
- 我又发现一个直接就能安装中文小红帽的方法
- 游戏筑基开发之双链表及其基本功能(C语言)
- ActionBarSherlock学习笔记 第一篇——部署
- 我的世界有宠物系统服务器,我的世界:如果Minecraft加入战斗宠物系统,推荐5大最强生物!...
- VMware 12 许可密钥
- window10安装vnc无法使用,window10安装vnc无法使用的原因和解决办法
- 笔记本电脑频繁自动重启_笔记本电脑总是自动重启怎么回事
- OSChina 周六乱弹 ——致敬默默守护国运的男人们
- 红帽子企业Linux 5安装序列号
- NDB Cluster 基本介绍
- JS判断是否含有某个字段
- 配置Json-Server