今天來解YKL23(UVA10062):Tell me the frequencies!
這題就是比字串中
每個字元都計算出其數量
output: 由小排到大
freq[128] = {0}; 表示陣列 freq 中的所有元素都初始化為
當 str = "AAAABBC" 時,程式逐一遍歷每個字元:
ch = 'A',freq['A']++,所以 freq[65] = 1。
ch = 'A',freq['A']++,所以 freq[65] = 2。
ch = 'A',freq['A']++,所以 freq[65] = 3。
ch = 'A',freq['A']++,所以 freq[65] = 4。
ch = 'B',freq['B']++,所以 freq[66] = 1。
ch = 'B',freq['B']++,所以 freq[66] = 2。
ch = 'C',freq['C']++,所以 freq[67] = 1。
最後由比較小的開始輸出
#include <iostream>
using namespace std;
int main(){
string str;
bool space = true;
while(getline(cin,str)){
int freq[128] = {0};
if(!space) cout << endl;
space = false;
for(char ch : str){
freq[ch]++;
}
for(int count = 1;count <= 1000;count++){
for(int i=127;i >= 32;i--){
if(freq[i] == count){
cout << i << " " << freq[i] << endl;
}
}
}
}
return 0;
}