PAT-B1039 구매 여부 (20 점)

샤오 홍은 자신이 좋아하는 구슬을 만들기 위해 구슬 몇 개를 사고 싶어합니다. 구슬을 파는 가게 주인은 색색의 구슬을 많이 가지고 있었지만, 그 구슬을 파는 것을 거절했습니다. 그래서 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;
	}


여기에 사진 설명 삽입

추천

출처blog.csdn.net/SKMIT/article/details/113871099