华为2011机试题
语言识别问题
时间限制(普通/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<string> #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; #define NUM 100 int language_rec( char (*str)[NUM],int num) { int s_num=0; int t_num=0; for(int i=0;i<num;i++) {int j=0; while(str[i][j]!='\0') { if((str[i][j]=='s')||str[i][j]=='S') s_num++; else if ((str[i][j]=='t')||str[i][j]=='T') t_num++; j++; } } if(s_num>t_num) return 1; else if(s_num<t_num) return 2; else return 0; } int main() { int num=2; char str[][NUM]={"start","tSToot"}; int lan=language_rec(str,num); if(lan==1) cout<<"Deutsch"<<endl; else if(lan==2) cout<<"English"<<endl; else cout<<"Can not confirm."; }