0
已解决
倪雨泽
高级光能
高级光能
<front color="#FFFFF"> 我不会~ 求大佬指点一二~</font>
倪雨泽在2024-04-21 23:30:47追加了内容
6499 咒语
经验值:1200
时间限制:1000毫秒
内存限制:128MB
题目描述 Description
古老的法师联盟创建了法术体系,这个体系中有符文,咒语和法术这三种技能。符文是一个字符串,必须由字母组成(包含大小写);咒语是一种特殊的符文,只有当符文中只包含一个大写字母且在首位时,该符文才是一个咒语;而法术,是若干个符文以空格隔开组成的字符串,并且最后一个字符是标点符号(. ? !)。
现给你M个法术,请问每个法术中有多少咒语。
输入描述 Input Description
第一行一个正整数M
第二行M个法术,法术之间以空格隔开,所有法术加在一起的总长度不超过1000
输出描述 Output Description
M行
每行一个整数表示咒语的个数
样例输入 Sample Input
1 Spavas li Mirno del Potro Juan Martine?
样例输出 Sample Output
5
数据范围及提示 Data Size & Hint
40%的数据:M=1;
100%的数据:1≤M≤5
#include<iostream>
#include<string>
using namespace std;
int m;
string s;
int st,ed;
int main(){
cin>>m;
getline(cin,s);
while(m--){
getline(cin,s);
for(int i=0;i<s.length();i++){
if(!(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')){
s[i]=' ';
}
}
int cnt=0;
s=' '+s+' ';
for(int i=0;i<s.size();i++){
if(s[i]!=' '&&s[i-1]==' '){
st=i;
}
if(s[i]!=' '&&s[i+1]==' '){
ed=i;
string tmp=s.substr(st,ed-st+1);
if(tmp[0]>='A'&&tmp[0]<='Z'){
bool f=0;
for(int i=1;i<tmp.length();i++){
if(tmp[i]>='A'&&tmp[i]<='Z'){
f=1;
break;
}
}
if(f==0) cnt++;
}
}
}
cout<<cnt<<endl;
}
return 0;
}//WA 50
倪雨泽在2024-04-21 23:40:11追加了内容
<span style="display:block;text-align:right;color:orangered;">ctrl</span>
![](https://markdown.com.cn/images/i-am-svg.svg)
DING