PAT-B 1039 到底買不買(C語(yǔ)言)

題目

鏈接:PAT (Basic Level) Practice 1039 到底買不買

小紅想買些珠子做一串自己喜歡的珠串。賣珠子的攤主有很多串五顏六色的珠串,但是不肯把任何一串拆散了賣。于是小紅要你幫忙判斷一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告訴她有多少多余的珠子;如果不是,那么告訴她缺了多少珠子。
為方便起見,我們用[0-9]、[a-z]、[A-Z]范圍內(nèi)的字符來表示顏色。例如在圖1中,第3串是小紅想做的珠串;那么第1串可以買,因?yàn)榘巳克胍闹樽?,還多了8顆不需要的珠子;第2串不能買,因?yàn)闆]有黑色珠子,并且少了一顆紅色的珠子。


圖1

輸入格式:

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

輸出格式:

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

輸入樣例 1:

ppRYYGrrYBR2258
YrR8RrY

輸出樣例 1:

Yes 8

輸入樣例 2:

ppRYYGrrYB225
YrR8RrY

輸出樣例 2:

No 2

思路

因?yàn)橹樽邮怯糜邢薜淖址硎镜?,所以用?shù)組來存放珠子數(shù)據(jù),數(shù)組下標(biāo)表示珠子字符的ASC碼。然后對(duì)比兩個(gè)數(shù)組,得出結(jié)果。


代碼

#include<stdio.h>
#include<string.h>

int main()
{
  int sale[190] = {0};
  int buy[190] = {0};
  int cnt1 = 0;
  int cnt2 = 0;
  int c;
  int flag = 0;
  while((c = getchar()) != '\n'){
    sale[c]++;
  }
  while((c = getchar()) != '\n'){
    buy[c]++;
  }
  
  for(int i = '0'; i <= 'z'; i++){
    if(sale[i] < buy[i]){
      flag = 1;
      cnt2 += buy[i] - sale[i];
    }
    else{
      cnt1 += sale[i] - buy[i];
    }
    //加速循環(huán)
    if(i == '9'){
      i = 'A' - 1;
    }
    if(i == 'Z'){
      i = 'a' - 1;
    }
  }
  if(flag == 1){
    printf("No %d", cnt2);
  }
  else{
    printf("Yes %d", cnt1);
  }
  return 0;
}

---END---

其他相關(guān)題目

PAT-B 1036 跟奧巴馬一起編程(C語(yǔ)言)
PAT-B 1037 在霍格沃茨找零錢(C語(yǔ)言)
PAT-B 1038 統(tǒng)計(jì)同成績(jī)學(xué)生(C語(yǔ)言)
PAT-B 1040 有幾個(gè)PAT(C語(yǔ)言)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容