华为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.";

}

 

posted @ 2013-07-02 11:16  mood3604  阅读(215)  评论(0编辑  收藏  举报