语言识别问题
时间限制(普通/Java):10000MS/30000MS 运行内存限制:65536KByte
问题描述
给你一段英文或德文文字,你能编程识别它可能是哪种语言吗?研究发现,统计文字中字母“t”(或“T”)与“s”(或“S”)出现的次数,如果给定文字中“t”(或“T”)的出现次数比“s”(或“S”)多,则可能为英文,否则可能为德文。
问题输入
输入包括多个行数,首先给出整数N(1<N<10000),接着给出N行文字,每一行文字至少包括一个字符,至多100个字符。
问题输出
输出包括一行,如果输入文字可能为英文,则输出English,否则输出Deutsch。
样例输入
6
ON THIS THE REST OF THE ACHAEANS WITH
ONE VOICE WERE FOR RESPECTING
THE PRIEST AND TAKING THE RANSOM THAT HE OFFERED; BUT NOT SO AGAMEMNON,
WHO SPOKE FIERCELY TO HIM AND SENT HIM ROUGHLY AWAY.
OLD MAN, SAID HE,
LET ME NOT FIND YOU TARRYING ABOUT OUR SHIPS
样例输出
English
#include<iostream>
#include<fstream>
#include<algorithm>
#include<iterator>
using namespace std;
int cnt_Tt;
int cnt_Ss;
void getCnt(char c)
{
if(c=='T' || c=='t')
cnt_Tt++;
else if(c=='S'|| c== 's')
cnt_Ss++;
}
int main(int argc,char** argv)
{
ifstream ifs("data.txt");
for_each(istream_iterator<char>(ifs),istream_iterator<char>(),getCnt);
cout<< (cnt_Tt>cnt_Ss?"English":"Deutsch")<<endl;;
system("pause");
}
代码如下:(网友版)
void main(){
int n,S_num=0,T_num=0;
cin>>n;
char ch;
getchar();
for(int i=0;i<n;i++){
while(1){
ch=getchar();
if(ch=='\n') break;
if(ch=='s'||ch=='S') S_num++;
if(ch=='t'||ch=='T') T_num++;
}
}
if(S_num>T_num) cout<<"English\n";
else cout<<"Deutsch\n";
}