26个大写字母里面,有一部分字母是带有圈的,比如A有1个圈,B有2个圈,C没有圈,
给你一个带有n个大写字母组成的字符串,请问一共有多少个圈圈。
你可以将字母中完全封闭的一个区域当作一个圈
输入描述:
第一行输入一个整数t,代表有t组测试数据,
对于每组测试数据,
第一行输入一个整数n代表字符串的长度,
第二行输入一个长度为n的字符串S,保证只由大写字母组成。
1<=t<=10
1<=n<=1*10^5
输出描述:
对于每组测试数据,输出一个整数代表这个字符串共有多少个圈圈。
并且对于每组数据,答案占单独的一行。
示例
输入:
2
8
HELLOACM
16
XINSHENGSAIJIAYOU
输出:
2
3`
#include<stdio.h>
int main()
{
int num,number;//测试num次,number个字母
scanf("%d",&num);
int i,j;//循环控制
int m[10]={0}; //(不能动态赋值如s[num]={0},可以使用指针)
int x=0;//圈的个数
for(i=0;i<num;i++){
scanf("%d",&number);
char a[number];
scanf("%s",&a);
x=0;
for(j=0;j<number;j++){
if(a[j]=='A'||a[j]=='D'||a[j]=='O'||a[j]=='P'||a[j]=='Q'||a[j]=='R'){
x++;
}
if(a[j]=='B'){
x=x+2;
}
}
m[i]=x;
} //有A.D.O.P.Q.R+1;有B+2
for(i=0;i<num;i++){
printf("%d\n",m[i]);
}
return 0;
}
问题:
1.数组不能动态赋值,入sum[n]={0};但可以使用指针。