T1 打字(\(50pts\))
题目

思路
字符串处理,注意所有情况如: B 是一个名字,B1 不是。
code
#include<bits/stdc++.h>
using namespace std;
int sum,o,m,ans[10010],cnt=1;
char s[10010];
signed main(void){
scanf("%d",&o);
while(scanf("%s",s+1)!=EOF){
//cout<<(s+1)<<endl;
int n=strlen(s+1);
int f=(s[1]>='A'&&s[1]<='Z');
if(f) for(int i=2;i<n;++i) if(!(s[i]>='a'&&s[i]<='z')) f=0;//是否有不是数字的
if((s[n]=='.'||s[n]=='?'||s[n]=='!')){
printf("%d\n",sum+f);
sum=0;
}
else if(f&&((s[n]>='a'&&s[n]<='z')||(n==1))) ++sum;
}
return 0;
}
T2 下棋(\(6pts\))
题目

思路
\(50pts\)
贪心,因为数据规定每个格子右边和下边的两个英文字母不同,依次选择字典序最小的字母即可。
\(70pts\)
搜索
\(100pts\)
枚举
对于每一步,步数相同时,坐标 \((x,y)\),\(x+y\) 的值相同。所以基本思路是:枚举每一步中的所有字
母,同时需要判断上一步是否可到达(才能走到当前位置),选出其中字典序最小的,标记这些位置是可达
的,这些位置可以进行扩展。