到底買不買(PAT)
阿新 • • 發佈:2019-01-25
到底買不買(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; }