샤오 홍은 자신이 좋아하는 구슬을 만들기 위해 구슬 몇 개를 사고 싶어합니다. 구슬을 파는 가게 주인은 색색의 구슬을 많이 가지고 있었지만, 그 구슬을 파는 것을 거절했습니다. 그래서 Xiaohong은 특정 구슬에 원하는 구슬이 모두 포함되어 있는지 판단하는 데 도움을 요청합니다. 만약 그렇다면 그녀에게 추가 구슬이 몇 개 있는지 말하고, 그렇지 않다면 얼마나 많은 구슬이 빠졌는지 알려주십시오.
편의상 [0-9], [az] 및 [AZ] 범위의 문자를 사용하여 색상을 나타냅니다. 예를 들어, 그림 1에서 세 번째 줄은 Xiao Hong이 만들고자하는 구슬 줄입니다. 첫 번째 줄은 원하는 구슬이 모두 포함되어 있고 필요하지 않은 구슬이 8 개 더 있기 때문에 구입할 수 있습니다. 두 번째 줄은 사용할 수 없습니다. 검은 구슬이없고 빨간색 구슬이 하나 없기 때문에 구입하십시오.
입력 형식 :
각 입력에는 1 개의 테스트 케이스가 있습니다. 각 테스트 케이스는 스톨 소유자의 비드 스트링과 Xiaohong이 만들고자하는 비드 스트링을 2 열로 제공하며 두 스트링은 1000 비드를 초과하지 않습니다.
출력 형식:
구매할 수있는 경우 Yes를 출력하고 한 줄에 추가 구슬이 몇 개 있는지, 사용할 수없는 경우 No를 출력하고 한 줄에 누락 된 구슬 수를 출력합니다. 공백 1 개로 구분합니다.
입력 예 1 :
ppRYYGrrYBR2258
YrR8RrY
출력 샘플 1 :
예 8
입력 예 1 :
ppRYYGrrYB225
YrR8RrY
출력 샘플 1 :
아니 2
아이디어 :
0-9, az, AZ 문자를 통계 배열 "정적"으로 통합하고 초기 값 0을 할당합니다.
크기 : '0'의 ASCII는 48이고 ' z '의 ASCII는 122이므로 open 100 어레이가 작동합니다.
먼저 필요한 비드 색상을 입력하고 균일하게 배열에 넣습니다. 그런 다음 루프를 사용하여 상점 비드 배열을 횡단합니다.
사고 싶은 구슬을 빼면 어떤 구슬이 빠졌는지 알 수 있습니다.
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cctype>
#include<cstring>
using namespace std;
int main()
{
int flag=0,count_lose=0;
int statics[100]={
0};
char store[1001],bead[1001];
cin>>store>>bead;
int len_s=strlen(store);
int len_b=strlen(bead);
for(int i=0;i<len_b;i++)
{
statics[ bead[i]-'0']++;
}
for(int i=0;i<len_s;i++)
{
statics[store[i]-'0']--;
}
for(int i=0;i<100;i++)
{
if(statics[i]>0)
{
flag=1;
count_lose+=statics[i];
}
}
if(flag==1) cout<<"No"<<" "<<count_lose<<endl;
else cout<<"Yes"<<" "<<len_s-len_b<<endl;
}