题目链接:https://vjudge.net/problem/UVA-489

题意:给出两行字符串,第一行是标准答案,第二行是玩家猜的串。玩家每次猜一个,猜对一个,标准答案中所有该字符都算被猜到。猜错的次数不能到达七次。多次因同一个字符猜错算猜错一次(这个条件没有用)。

  猜对,

没猜对且错了七次,

没猜对但还没错到七次

  分别输出

You win.
You lose.
You chickened out.

题解:模拟,莫名奇妙wa了一个小时。各种修改。

以至于找到了一组数据,oj检测不出来,手算明显是错的:

word
aerbmzagword

ac代码是You lose., 手算是You win.

其实我错的是这一行:

24 if (a[s2[i]]==1)a[s2[i]] = 0, num--;

之前写成了 a[s2[i]] = -1
这样的话如果下次再次出现之前已经猜到了的字符,会计算一次错误,然后gg(紫书写的“猜一个已经猜过的字母也算错”是错的,我敲了一遍书上的代码也是wa的)

(坑)

附ac代码:用了字符为下标的数组a[256]来简化,num来判断是否全部猜到,

 #include<string.h>
#include<iostream>
#include<string> using namespace std; int a[];
int main()
{
int n;
int kase = ;
while (cin >> n) {
if (n == -)break;
string s1, s2;
cin >> s1 >> s2;
memset(a, -, sizeof(a));
int len = s1.size(); int num = ;
for (int i = ; i < len; i++)if (a[s1[i]]==-) {
a[s1[i]] = ; num++;
}
int cnt = ; int ok = ;
len = s2.size();
for (int i = ; i < len; i++) {
if (a[s2[i]]==)a[s2[i]] = , num--;
//else cnt++;(替代下一行也ac)
if (a[s2[i]] == -)cnt++;
if (cnt >= )break;
if (num == ) {
break;
}
}
cout << "Round ";
cout << n << endl;
if (num==)cout << "You win." << endl;
else if (cnt >= )cout << "You lose." << endl;
else cout << "You chickened out." << endl;
} return ; }

【紫书】uva489 Hangman Judge 做了很久Orz的更多相关文章

  1. UVA489 - Hangman Judge【紫书例题4.2】

    题意:就是给出一个字符串,让你去一个一个猜测,相同字母算一次,如果是之前猜过的也算错,如果你在错7次前猜对就算你赢,文章中是LRJ的例题代码. #include<stdio.h> #inc ...

  2. UVa 12169 Disgruntled Judge 紫书

    思路还是按照紫书,枚举a,得出b, 然后验证. 代码参考了LRJ的. #include <cstdio> #include <iostream> using namespace ...

  3. 【紫书】(UVa12096) The SetStack Computer

    突然转进到第五章的low题目的原因是做到图论了(紫书),然后惊喜的发现第一题就做不出来.那么里面用到了这一题的思想,我们就先解决这题.当然,dp必须继续做下去,这是基本功.断不得. 题意分析 这条题真 ...

  4. 紫书 习题 11-8 UVa 1663 (最大流求二分图最大基数匹配)

    很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配 紫书上压根没讲这个算法, 而是用最大流求的. 难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗? 很有可能-- 回归正题. 题目中 ...

  5. 紫书 习题8-7 UVa 11925(构造法, 不需逆向)

    这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...

  6. UVA 816 Abbott's Revenge 紫书

    紫书的这道题, 作者说是很重要. 但看着题解好长, 加上那段时间有别的事, 磨了几天没有动手. 最后,这道题我打了五遍以上 ,有两次被BUG卡了,找了很久才找到. 思路紫书上有,就缺少输入和边界判断两 ...

  7. UVa 489 Hangman Judge(字符串)

     Hangman Judge  In ``Hangman Judge,'' you are to write a program that judges a series of Hangman gam ...

  8. 紫书 例题8-12 UVa 12627 (找规律 + 递归)

    紫书上有很明显的笔误, 公式写错了.g(k, i)的那个公式应该加上c(k-1)而不是c(k).如果加上c(k-1)那就是这一次 所有的红气球的数目, 肯定大于最下面i行的红气球数 我用的是f的公式, ...

  9. 紫书 习题 11-9 UVa 12549 (二分图最小点覆盖)

    用到了二分图的一些性质, 最大匹配数=最小点覆盖 貌似在白书上有讲 还不是很懂, 自己看着别人的博客用网络流写了一遍 反正以后学白书应该会系统学二分图的,紫书上没讲深. 目前就这样吧. #includ ...

随机推荐

  1. SNFAutoupdater通用自动升级组件V2.0

    1.组件介绍 C/S构的特点是能充分发挥客户端的处理能力,很多工作可以由客户端处理后再提交给服务器,对应的优点就是客户端响应速度快模式客户端以其强大的功能,丰富的表现力受到相当大部分用户的青睐,但是客 ...

  2. Xilinx 常用模块汇总(verilog)【04】

    作者:桂. 时间:2018-05-15  13:07:02 链接:http://www.cnblogs.com/xingshansi/p/9040472.html 前言 Xilinx 常用模块汇总(v ...

  3. [Android实例] Activity实例StartActivity出现NullPointer异常

    [Android实例] Activity实例StartActivity出现NullPointer异常 [android实例教程] 在Android低版本(如2.3.3)中出现如下“界面跳转”的错误: ...

  4. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  5. 通过MTK迁移Mysql到EDB实战指南

    1.1 迁移准备 下图是Migration toolkit(MTK)可使用的迁移功能 1 查看一下迁移源数据库testdb信息.共三张表 watermark/2/text/aHR0cDovL2Jsb2 ...

  6. 《转》vue更新到2.0之后vue-resource不在更新,axios的使用

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  7. 如何在Excel中提取小数点后面的数字?

    Excel中,如果某个单元格中包含一个带小数,要用公式提取该数值小数点后面的数字,例如A1单元格中包含一个数值“59178.68”,在B1单元格中输入下面的公式: =RIGHT(A1,LEN(A1)- ...

  8. jquery 动画总结(主要指效果函数)

    动画无非两类:帧动画frame和变形动画tween,以及3d动画.不论web还是安卓苹果app,动画原理都是这些. web app 动画实现的途径,无非这几种:1 gif动画---这就是帧动画,把若干 ...

  9. Java如何清除空格?

    在Java编程中,如何清除/删除空格? 以下示例演示如何使用Util.regex.Pattern类的matcher.replaceAll(stringname)方法来删除空格. package com ...

  10. Debian root登录设置

    修改gdm3的登录pam文件 #vi /etc/pam.d/gdm3 将auth required pam_succeed_if.so user != root quiet_success注释掉 // ...