1205: 杨八方的英语问题 [思维]
时间限制: 1 Sec 内存限制: 128 MB提交: 22 解决: 11
[ 提交][ 状态][ 讨论版]
题目描述
杨八方相信世界上有语感这种东西,有些人对英语拥有天生的敏感。杨八方对英语的敏感体现在它她能快速找到一个字符串中的某些字母。
一个字符串中的字符如果满足以下条件(字符串下标从1开始):
1. si= si='A', sj= sj='C', sk= sk='M'
2. i,j,k i,j,k成等差数列。
则 (i,j,k) (i,j,k)称为一个“ACM组”,现在请你计算给定字符串有多少个“ACM组”。
输入
第一行是一个整数 T T,代表有 T T组测试数据。
下面 T T行,每一行有一个只可能大写字母、小写字母的字符串。
0<T<100 0<T<100
字符串长度不超过1000
输出
对于每组测试输出“ACM”组的个数。
样例输入
3
ACM
AaCCMcM
Acm
样例输出
1
2
0
提示
“A”、“C”、“M”三个字母区分大小写。
来源
这道题比较有趣,第一遍在ZZULIOJ的新生赛做的时候直接过了,结果直接复制粘贴到hpuoj上就超时。微小改动一下过了。
#include<stdio.h>
#include<string.h>
int main(){
char a[10010];
int m,n,j,i,k,t,l,p;
scanf("%d",&t);
while(t--){
p=0;
memset(a,0,sizeof(a));
scanf("%s",a);
l=strlen(a);
for(i=0;i<l;i++){
for(j=i+1;j<l;j++){
if(a[i]=='A' && a[j]=='C'){
k=j+j-i;
if(a[k]=='M' ){
p++;
}
}
}
}
for(i=0;i<l;i++){
for(j=i+1;j<l;j++){
if(a[i]=='M'&&a[j]=='C'){
k=j+j-i;
if(a[k]=='A'){
p++;
}
}
}
}
printf("%d\n",p);
}
return 0;
}