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关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
随机推荐
- POJ 3678
Katu Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7391 Accepted: 2717 Descr ...
- POJ 3696 The Luckiest number (欧拉函数,好题)
该题没思路,参考了网上各种题解.... 注意到凡是那种11111..... 22222..... 33333.....之类的序列都可用这个式子来表示:k*(10^x-1)/9进而简化:8 * (10^ ...
- VulToEs
VulntoES https://github.com/ChrisRimondi/VulntoES
- hdu 3094 A tree game 博弈论
思路: 叶子节点的SG值为0:中间节点的SG值为它的所有子节点的SG值加1 后的异或和. 详见贾志豪神牛的论文:组合游戏略述 ——浅谈SG游戏的若干拓展及变形 代码如下: #include<cs ...
- Project Euler 109 :Darts 飞镖
Darts In the game of darts a player throws three darts at a target board which is split into twenty ...
- @RequestBody 的正确使用办法
1.以前一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是 ...
- 将EXE作为资源,然后在释放到磁盘上并运行该exe程序(使用了FindResource,LoadResource,然后用CFile写成一个文件)
// 将exe作为资源加入,然后再释放出来,并运行 try { HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_EXE1), _T(" ...
- ajax:$.get()
提要: $.get("异步文件",数值,回调函数); 加载XML文档 a.xml <?xml version="1.0" encoding="U ...
- DP-母函数
DP---母函数 先由钱币兑换问题开始 http://acm.hdu.edu.cn/showproblem.php?pid=1284 Problem Description 在一个国家仅有1分,2分, ...
- TCP建立连接的三次握手过程
TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程. 上图画出了TCP建立连接的过程.假定主机A运行的是TCP客户程序,B运行的是TCP服务器程序.最初两端的TCP进 ...