PAT-BASIC-1039-到底买不买
生活随笔
收集整理的這篇文章主要介紹了
PAT-BASIC-1039-到底买不买
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小紅想買些珠子做一串自己喜歡的珠串。賣珠子的攤主有很多串五顏六色的珠串,但是不肯把任何一串拆散了賣。于是小紅要你幫忙判斷一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告訴她有多少多余的珠子;如果不是,那么告訴她缺了多少珠子。
為方便起見,我們用[0-9]、[a-z]、[A-Z]范圍內的字符來表示顏色。例如在圖1中,第3串是小紅想做的珠串;那么第1串可以買,因為包含了全部她想要的珠子,還多了8顆不需要的珠子;第2串不能買,因為沒有黑色珠子,并且少了一顆紅色的珠子。
圖 1
輸入格式:
每個輸入包含1個測試用例。每個測試用例分別在2行中先后給出攤主的珠串和小紅想做的珠串,兩串都不超過1000個珠子。
輸出格式:
如果可以買,則在一行中輸出“Yes”以及有多少多余的珠子;如果不可以買,則在一行中輸出“No”以及缺了多少珠子。其間以1個空格分隔。
輸入樣例1:
ppRYYGrrYBR2258 YrR8RrY輸出樣例1:
Yes 8輸入樣例2:
ppRYYGrrYB225 YrR8RrY輸出樣例2:
No 2?將兩個字符串按字典序排序后,然后類似兩個有序鏈表合并的形式(O(m+n))進行比較,每當比對成功一個字符,就把des串中對應的位置置為' '
最后如果des串中僅有' ',則匹配成功,多出來的數量必為lenSrc-lenDes;反之匹配失敗,失敗數就是非空格數
#include <bits/stdc++.h> #define LL long long #define MAXN 1000+50 using namespace std;char src[MAXN], des[MAXN]; bool cmp(const char &a, const char &b){return a < b; } int main(){scanf("%s", src);int lenSrc = strlen(src);sort(src, src+lenSrc, cmp);scanf("%s", des);int lenDes = strlen(des);sort(des, des+lenDes, cmp);int i = 0, j = 0;for(i = 0; i < lenSrc; ++i){if(j == lenDes){break;}if(src[i] == des[j]){des[j] = ' ';++j;}else if(src[i] > des[j]){++j;--i;}else if(src[i] < des[j]){//doNothing }}int res = 0;for(int t = 0; t < lenDes; ++t){if(des[t] != ' '){res++;}}if(res){printf("No %d\n", res);}else{printf("Yes %d\n", lenSrc-lenDes);}return 0; } CAPOUIS'CODE?
轉載于:https://www.cnblogs.com/capouis/p/4652489.html
總結
以上是生活随笔為你收集整理的PAT-BASIC-1039-到底买不买的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu 下使用mysql
- 下一篇: android stuido 在线安装s