【题目】

猜单词游戏。

计算机想一个单词让你猜,你每次猜一个字母。

如果单词里有那个【字母】,【所有该字母会显示出来】。

如果没有那个字母,算猜错一次。【最多只能猜错六次】

猜一个已经猜过的字母也算错。

【样例输入】

1

cheese

chese

2

cheese

abcdefg

3

cheese

abcdefgij

-1

【样例输出】

Round 1

You win.

Round 2

You chickened out.

Round 3

You lose.

【思路】

为了实现“如果单词里有那个【字母】,【所有该字母会显示出来】。猜一个已经猜过的字母也算错。”的需求:

先看计算机的问题串中是否有这个字母,如果有,把所有这个字母都换成空格。

遍历串2的每一个字母,对于每一个字母,读取字母,看这个字母在串1中是否存在(遍历串1).再执行如上操作。

chickened out 和 win 的区别是 chickened out没有把问题串中所有字都覆盖到。尽管二者的错误都小于7.

【代码】

#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;
const int maxn = 25;
char* message[] = {"You win.", "You lose.", "You chickened out."}; void guess(char a, char str[], int len, int& wrong)
{
//考虑读入进来的字符,是不是在题目串中存在
int flag = 0;
//char temp;
for (int i = 0; i < len; i++)
{
if (str[i] == a)
{
flag = 1;
break;
}
//cout << i <<"wrong" << wrong << endl;
}
//如果在题目串中存在,将所有字符换成空格
if (flag)
{
for (int i = 0; i < len; i++)
{
if (str[i] == a)
{
str[i] = ' ';
}
}
}
else
{
wrong++;
}
} int main()
{
int n;
//数组s_ques为计算机猜测,s_ans为用户猜测
char s_ques[maxn], s_ans[maxn];
//考虑一组输入
while(scanf("%d%s%s",&n, &s_ques, &s_ans) == 3 && n != (-1))
{
int wrong = 0;
printf("Round %d\n", n);
int len1 = strlen(s_ques);
int len2 = strlen(s_ans);
for (int i = 0; i < len2; i++)
{
guess(s_ans[i], s_ques, len1, wrong);
}
int cnt = 0;
for (int i = 0; i < len1; i++)
{
if (s_ques[i] == ' ') cnt++;
}
if (wrong < 7 && cnt == len1)
{
cout << message[0] << endl;
}
else if (wrong > 6)
{
cout << message[1] << endl;
}
else
{
cout << message[2] << endl;
}
} system("pause");
}

【C/C++】例题 4-2 刽子手游戏/算法竞赛入门经典/函数和递归的更多相关文章

  1. 【C/C++】例题5-4 反片语/算法竞赛入门经典/C++与STL入门/映射:map

    本题是映射:map的例题. map:键值对. [题目] 输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词. 在判断是否满足条件时,字母不分大小写,但在输出 ...

  2. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  3. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  4. [刷题]算法竞赛入门经典 3-12/UVa11809

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa11809:Floating-Point Numbers 代码: //UVa11 ...

  5. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include&l ...

  6. [刷题]算法竞赛入门经典 3-7/UVa1368 3-8/UVa202 3-9/UVa10340

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 都是<算法竞赛入门经典(第二版)>的题目,标题上没写(第二版) 题目:算法竞赛入门经典 3-7/UVa13 ...

  7. [刷题]算法竞赛入门经典 3-4/UVa455 3-5/UVa227 3-6/UVa232

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa455:Periodic Strings 代码: //UVa455 #inclu ...

  8. [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO(我也是在网上找到的pdf,但不记得是从哪里搜刮到的了,就重新上传了一遍) PS:第一次写博客分享我的代码,不知道我对c ...

  9. 算法竞赛入门经典训练指南——UVA 11300 preading the Wealth

    A Communist regime is trying to redistribute wealth in a village. They have have decided to sit ever ...

随机推荐

  1. docker添加sudo权限

    sudo groupadd docker  # 添加group sudo gpasswd -a think docker  # 添加用户到组 sudo service docker restart n ...

  2. Effective C++ 总结笔记(一)

    一.让自己习惯C++ 01.视C++为一个语言联邦 c++是多重范型编程 语言,视c++包括4种次语言: 1:C 2:Object-Oreinted C++: 3:Template C++: 4:ST ...

  3. [bzoj1711]吃饭

    由于无法直接将果汁和饮料连边,所以将人放在中间,果汁和饮料放在两侧,然后分别向对应的人连边.同时,为了保证每一个人只被算一次,对每一个人裂点,两个点中间连一条流量为1的边. 1 #include< ...

  4. [luogu5438]记忆

    令$f(x)=\frac{x}{\max_{k^{2}|x}k^{2}}$,最优解即将$f(l),f(l+1),...,f(r)$排序,那么每存在一种不同的数则答案减1,那么$x$出现当且仅当$f(x ...

  5. 【NetWork】-- 网络原理

    2019-07-18  21:00:25  by冲冲 1. 网络拓扑 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构(Network T ...

  6. Git的基础入门

    Git --everything-is-local 查阅文档 Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容. Git易于学习, 占地面积小,具有闪电般的快速 ...

  7. 【GWAS】如何计算显著关联位点的表型解释率PVE(phenotypic variation explained)?

    我已经通过Gemma得到了关联分析的结果,如下. prefix.log.txt 中包含了一个总的PVE,这不是我们想要的. 那么,如何计算这些位点的表型解释率? 据了解,有些关联分析软件是可以同时得到 ...

  8. 3D-DNA 挂载染色体

    3D-DNA是一款简单,方便的处理Hi-C软件,可将contig提升到染色体水平.其githup网址:https://github.com/theaidenlab/3d-dna 3D-DNA流程简介 ...

  9. Linux Alpine安装 Nginx

    Linux Alpine安装 Nginx 安装需要编译Nginx的扩展 apk add wget gcc g++ make 安装Nginx URL重定向,正则表达式模块pcre Pcre 源码下载地址 ...

  10. C语言 字符串指针和字符串数组使用区别

    字符串指针和字符串数组使用区别 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 ...