UVA 489 Hangman Judge (字符匹配)
题意:给一个字符串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 (字符匹配)的更多相关文章
- UVa 489 Hangman Judge(字符串)
Hangman Judge In ``Hangman Judge,'' you are to write a program that judges a series of Hangman gam ...
- uva 489.Hangman Judge 解题报告
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 489 Hangman Judge(水题)
题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- uva 489 Hangman Judge
大意:电脑想个单词,玩家来猜.玩家输入一个个字母,若答案里有这个字母,则显示该单词中所有该字母.最终目标是显示答案所有字母.猜错7次,死: 注意特殊条件:1.玩家不断重复错误的字母,只算一次猜错.2. ...
- uvaoj 489 - Hangman Judge(逻辑+写代码能力)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Hangman Judge UVA - 489
In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each gam ...
- UVa 489 HangmanJudge --- 水题
UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...
- 【编程题目】有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配...
37.(字符串)有 n 个长为 m+1 的字符串,如果某个字符串的最后 m 个字符与某个字符串的前 m 个字符匹配,则两个字符串可以联接,问这 n 个字符串最多可以连成一个多长的字符串,如果出现循环, ...
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
随机推荐
- Find the smallest number whose digits multiply to a given number n
Given a number ‘n’, find the smallest number ‘p’ such that if we multiply all digits of ‘p’, we get ...
- hadoop配置错误
经过上一周的郁闷期(拖延症引发的郁闷),今天终于开始步入正轨了.今天主要是解决hadoop配置的错误以及网络时断时续的问题. 首先说明一下之前按照这篇文章的方法配置完全没有问题,但是等我配置好了发现h ...
- POJ 1961 2406 (KMP,最小循环节,循环周期)
关于KMP的最短循环节.循环周期,请戳: http://www.cnblogs.com/chenxiwenruo/p/3546457.html (KMP模板,最小循环节) POJ 2406 Powe ...
- Xcode显示行号
- ubuntu安装 scala
1. 配置路径 sudo gedit /etc/profile 2.在文件后面加入 export PATH=/home/sendi/scala-/bin:$PATH 3.更新 source /etc/ ...
- ***ECharts图表入门和最佳实践
ECharts数据图表系统? 5分钟上手! [ECharts简介] ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动, ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...
- React可控组件与不可控组件
一.不可控组件 1.简介 2.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta ch ...
- android+apimonitor+genymotion
1. 安装genymotion: http://www.genymotion.net/ 2. 设置使用adb Setting--adb--选择sdk的目录 3. apimonitor https:// ...
- mysql主从配置(转载)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://369369.blog.51cto.com/319630/790921 还可以参考 ...