题目描述
小杨是一名Dota资深玩家,和众多Dota玩家一样,他和周围一群LOL玩家在一起有一种自然的优越感,然而身边的刀友确一个个投入了撸狗的行列,直到现在周围再没了
一个同行。。。他很愤慨,于是有了下面这道题目:
两个分别只含有Dotaer和Loler中的字母的字符串,长度(<10^6),请你分别统计两个字符串中所含字母能够组成Dotaer和Loler的最大数量(不区分大小写),然后根
据两者的数量判断输赢,若Loler数量大于Dotaer数量的3倍,则Loler win,反之Dotaer win。
输入
每个输入包含多个测试用例,每个测试用包括两行,第一行为构成Dotaer的字符串,第二行为构成Loler的字符串。
输出
对于每个测试用例输出三行,第一行为Dotaer数量,第二行为Loler数量,第三行为哪方win。
样例输入
otdarrreoddtooaaoooee rolereoreolrereoreol
样例输出
Dotaer: 2 Loler: 1 Dotaer win
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char a[1000000],b[1000000];
while(~scanf("%s%s",a,b))
{
int d1=0,o1=0,t1=0,a1=0,e1=0,r1=0;//一直在找问题是居然这么低级的错误之处,把局部变量定义在外边了,哈哈,太蠢了,wa了四五次
int l2=0,o2=0,e2=0,r2=0;
int x1,x2,c,d,y;
c=strlen(a);
d=strlen(b);
for(int i=0;i<c;i++)
{
if(tolower(a[i])=='d')d1++;
if(tolower(a[i])=='o')o1++;
if(tolower(a[i])=='t')t1++;
if(tolower(a[i])=='a')a1++;
if(tolower(a[i])=='e')e1++;
if(tolower(a[i])=='r')r1++;
}
x1=min(min(min(min(min(r1,e1),a1),t1),o1),d1);
for(int i=0;i<d;i++)
{
if(tolower(b[i])=='l')l2++;
if(tolower(b[i])=='o')o2++;
if(tolower(b[i])=='e')e2++;
if(tolower(b[i])=='r')r2++;
}
y=l2/2;
x2=min(min(min(r2,e2),o2),y);
printf("Dotaer: %d\n",x1);
printf("Loler: %d\n",x2);
if(x2>3*x1)
printf("Loler win\n");
else
printf("Dotaer win\n");
}
}