题意:给一个字符串A,只含小写字符数个。再给一个字符串B,含小写字符数个。规则如下:

1、字符串B从左至右逐个字符遍历,对于每个字符,如果该字符在A中存在,将A中所有该字符删掉,若不存在,则错误次数+1。

2、当错误次数达到7时,游戏结束,输了lose。

3、当串A中已经没有字符了,游戏结束,赢了win。(串B后面还没遍历到的也不用遍历了)

4、当错误次数没到达7,但是字符串A还有剩下的字符没消去,则chickened out。

错满7个就输,在满7个之前匹配完了就赢,在满7个之前没匹配完就chickened out。

思路:将串A统计26个字符是否出现(用hash),遍历串B,每次匹配成功就删掉26个字母中对应那个,匹配失败就统计是否到达7次。

 #include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N=;
int has1[N], num[N];
string s1, s2; int cal() //匹配是-1,大于0小于7是悬着,大于7是挂了
{
int cnt1=, cnt3=;
for(int i=; i<s1.size(); i++) has1[s1[i]]++;
for(int i='a'; i<='z'; i++) if(has1[i]>) cnt1++; //需要多少个才匹配 for(int i=; i<s2.size(); i++)
{
if(has1[s2[i]]) //匹配的
{
has1[s2[i]]=;
cnt1--; //又匹配了一个
if(!cnt1) return -; //匹配完了
}
else cnt3++; //错误的
if(cnt3>=) return ; //错了7个
}
return cnt3;
} int main()
{
freopen("e://input.txt","r",stdin);
int n;
while(scanf("%d",&n),n>)
{
printf("Round %d\n",n);
memset(has1,,sizeof(has1));
memset(num,,sizeof(num));
cin>>s1>>s2;
int tmp=cal();
if(tmp==-) printf("You win.\n");
else if(tmp<) printf("You chickened out.\n");
else printf("You lose.\n");
}
return ;
}

AC代码

UVA 489 Hangman Judge (字符匹配)的更多相关文章

  1. UVa 489 Hangman Judge(字符串)

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

  2. uva 489.Hangman Judge 解题报告

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  3. uva 489 Hangman Judge(水题)

    题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...

  4. uva 489 Hangman Judge

    大意:电脑想个单词,玩家来猜.玩家输入一个个字母,若答案里有这个字母,则显示该单词中所有该字母.最终目标是显示答案所有字母.猜错7次,死: 注意特殊条件:1.玩家不断重复错误的字母,只算一次猜错.2. ...

  5. uvaoj 489 - Hangman Judge(逻辑+写代码能力)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. Hangman Judge UVA - 489

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

  7. UVa 489 HangmanJudge --- 水题

    UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...

  8. 【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...

    37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环, ...

  9. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

随机推荐

  1. .NET Framework 框架简述01

    NET技术可以以规范和实现两部分来划分.   规范:   公共语言架构(Common Language Infrastructure, CLI),主要包括 1.通用类型系统(Common Type S ...

  2. Python异步IO --- 轻松管理10k+并发连接

    前言   异步操作在计算机软硬件体系中是一个普遍概念,根源在于参与协作的各实体处理速度上有明显差异.软件开发中遇到的多数情况是CPU与IO的速度不匹配,所以异步IO存在于各种编程框架中,客户端比如浏览 ...

  3. C# DES 加密 解密

    //注意:密钥必须为8位 private const string m_strEncryptKey = "abcd1234"; /// <summary> /// 加密 ...

  4. EasyBCD 硬盘安装Pear OS

    Pear OS是一个界面很像mac的Linux distro,基于Ubuntu,免费.可惜的是pear被一个大公司匿名收购,所以现在不更新啦,最后的版本是pear 8.有个pear的替代者elemen ...

  5. hadoop 2.0 lzo 问题

    首先搞到lzo在github https://github.com/cloudera/hadoop-lzo/   ant package 对应的机器上把build目录下的native压缩,传给所有机器 ...

  6. Jquery DataTables warning : Requested unknown from the data source for row 0

    昨天在做 Jquery DataTables 的时候,遇到的一个问题,我使用MVC,在tables上加入了一个actionlink的href.但是在运行起来的时候,报错: DataTables war ...

  7. 288. Unique Word Abbreviation

    题目: An abbreviation of a word follows the form <first letter><number><last letter> ...

  8. Android百度地图开发04之POI检索

    POI检索 POI~~~ Point of Interest,翻译过来就是“兴趣点”.我们在使用地图的时候,搜索周边的ktv,饭店,或者宾馆的时候,输入关键字,然后地图展示给我们很多个点, 这些点就是 ...

  9. RedHat7 部署ELK日志分析系统

    一.ELK的组成二.工作流程三.环境准备四.正式安装 一.ELK的组成 ELK由ElasticSearch.Logstash和Kibana三部分组成,每一部分的功能及特点如下图所示: 二.工作流程 在 ...

  10. Redstone 云观象台 服务器部署 - Nginx配置文件

    以下信息仅针对Redstone的Ngxin配置文件进行更新. web服务器Nginx配置文件结构如下: /etc/nginx/nginx.conf # For more information on ...