1. 程式人生 > >到底買不買(PAT)

到底買不買(PAT)

到底買不買(20)

時間限制 1000 ms 記憶體限制 32768 KB 程式碼長度限制 100 KB 

題目描述

小紅想買些珠子做一串自己喜歡的珠串。賣珠子的攤主有很多串五顏六色的珠串,但是不肯把任何一串拆散了賣。於是小紅要你幫忙判斷一

下,某串珠子裡是否包含了全部自己想要的珠子?如果是,那麼告訴她有多少多餘的珠子;如果不是,那麼告訴她缺了多少珠子。



為方便起見,我們用[0-9]、[a-z]、[A-Z]範圍內的字元來表示顏色。例如,YrR8RrY是小紅想做的珠串;那麼ppRYYGrrYBR2258可以買,因為包含了

全部她想要的珠子,還多了8顆不需要的珠子;ppRYYGrrYB225不能買,因為沒有黑色珠子,並且少了一顆紅色的珠子。

輸入描述:

每個輸入包含1個測試用例。每個測試用例分別在2行中先後給出攤主的珠串和小紅想做的珠串,兩串都不超過1000個珠子。

輸出描述:

如果可以買,則在一行中輸出“Yes”以及有多少多餘的珠子;如果不可以買,則在一行中輸出“No”以及缺了多少珠子。其間以1個空格分隔。

輸入例子:

ppRYYGrrYBR2258

YrR8RrY

輸出例子:

Yes 8

徐不可說:網上看了幾個部落格裡面寫的 都比較繁瑣 以下是我的ac程式碼 c艹裡面算是比較簡潔的了。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	int i=0,wc=0;//wc->比較完成的個數
	char c[10000]={0},a[10000]={0},b[10000]={0};
	cin>>a>>b;
	while(a[i])
	{
		c[a[i]]++;
		i++;
	}
	for(int i=0;i<strlen(b);i++)
	{
		for(int q=0;q<256;q++){
			if(b[i]==q) {
				if(c[b[i]]>0)
			{
			c[b[i]]--;
			wc++;
			}
			}
		}
	}
	if(wc==strlen(b)) cout<<"Yes"<<" "<<strlen(a)-wc;
    if(wc<strlen(b)) cout<<"No"<<" "<<strlen(b)-wc;
}