实验八 字符串—小希练打字
【问题描述】
小希打字太慢了,因此他在苦练打字技巧。他用了一个教学 App,可以一个个显示自己打出来的英文单词。 当小希输入一个词时,他需要花0.2 秒输入第一个字母。而对于接下来的每个字母,如果在标 准指法下和前一个字母使用同侧手输入,则需要 0.4 秒;否则只需 0.2 秒。输入一个词所需的时间 为输入每个字母所需时间之和。不过,如果小希之前练过这个词,那么所需的时间可以降为初次 输入时的一半。小希输入的内容只包含26个英文字符(区分大小写),字符要求按照标准指法规定输入,其中"qwertasdfgzxcvb"这15个字符为左手字符,“yuiophjklnm”这11个字符为右手字符。 给定小希在练习中依次输入的词,请计算小希的总耗时。
【输入形式】
每组数据的第一行包含一个整数 N。接下来 N 行,每行包含一个字符串,代表小希输入的词。
【输出形式】
对于每组数据,输出一行,包含一个整数,代表小希的总耗时,单位为十分之一秒。
【样例输入】
5
fdjkd
dFjdk
dfD
fdjkd
KkJjk
【样例输出】
61
#include<iostream>
#include<string>
using namespace std;
int zf(char x)
{if(x==117||x==121||(x>=104&&x<=112)||(x>=72&&x<=80)||x==85||x==89)return 1;else return 2;
}
int main()
{int n,i,j=1,k,t=2;cin>>n;int a[n+1];a[0]=0;string str[n+1];for(i=1;i<=n;i++){cin>>str[i];}for(i=1;i<=n;i++){while(1){if(str[i][j]=='\0')break;if(zf(str[i][j])==zf(str[i][j-1]))t+=4;else t+=2;j++;}a[i]=t;for(k=i-1;k>=1;k--){if(str[i]==str[k]){a[i]/=2;break;}}t=2;j=1;}for(i=1;i<=n;i++){a[0]+=a[i];}cout<<a[0];return 0;}