第一行為輸入的字串數量,輸出字母頻率由大至小排列,若頻率相同,由字母小的先輸出。
每輸入完一組字串,先排除掉不是A-Z範圍的字後,再將字源轉成大寫。
隨後即開始計數到該字元ASCII的陣列中,並計算共計字元長度
再由大至小輸出頻率高到低的字元
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(){
int n,count[300]={0},len=0;
string s;
cin>>n;
cin.ignore(2,'\n');
while(n--){
getline(cin,s);
for(int i=0;i<s.length();i++){
count[toupper(s[i])]++;
len++;
}
}
while(--len){
for(char i='A';i<='Z';i++){
if(count[i]==len)
cout<<i<<" "<<count[i]<<endl;
}
}
}
判斷是否為B2-sequence,
B2-sequence的定義:
1.數字要1<=b1<b2<b3...
2.此數列內任兩數的總和是不一樣的
#include<iostream>
#include<set>
using namespace std;
int main(){
int n,c=1;//c=輸出的case數
set<int> s;//用set存相加的數值,因為set裡的元素不能重複
while(cin>>n){
int a[n];//輸入的數列
s.clear();//記得清除
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
if(a[i]<0)break;//B2數列一定是正整數
else if(a[i+1]<=a[i]&&i>=0)break;//B2數列的後項一定大於前項
for(int j=i;j<n;j++){
s.insert(a[i]+a[j]);//將相加的值插入set
}
}
//檢查相加的值是否都有
if(s.size()==(1+n)*n/2) cout<<"Case #"<<c<<": It is a B2-Sequence."<<endl<<endl;
else cout<<"Case #"<<c<<": It is not a B2-Sequence."<<endl<<endl;
c++;
}
return 0;
}