问题 A: 心电图
时间限制: 1 Sec 内存限制: 128 MB提交: 621 解决: 250
[提交][状态][讨论版]
题目描述
众所周知,ACM/ICPC实验室聚集了一堆学霸Orz
有学霸的地方就有学渣。而每次考试以后,就是学渣最痛苦的时候。尤其是成绩揭晓的时候,那心情就像十五个吊桶打水————七上八下的。
作为一个学渣,他是不能很好地预计这门考试的成绩的。有时候呢,本来以为考的还行的,结果考下来分数小于60;有时候呢,以为挂定了,结果居然一不小心高分飘过也是完全有可能的~~
学霸看着学渣的心情起起伏伏觉得挺有趣的,于是统计了一下学渣所有N门实际与预期的不合的成绩,绘制成了一幅“心电图”,横坐标表示学渣的科目数,纵坐标表示心情值,正为高兴,负为沮丧,为0时表示心情正常。因为学霸只统计了实际与预期不合的情况,所以这N门科目只存在两种情况:高兴->沮丧,或者沮丧->高兴。
如下图所示:
其中,用1表示沮丧->高兴,用0表示高兴->沮丧。学霸给出一个长度为N的仅包含0、1的字符串,问学渣的心情多少次经过正常值?两门科目间心情变动也算的哟~~
输入
第一行包含一个数字T(T <= 50), 表示测试样例组数。
接下来T行,每一行包括0、1组成的字符串。字符串长度不超过100。不会出现空串。
输出
每组输入对应输出一行“Case #x: y”,x表示数据组数,y表示结果。
样例输入
2
00110
10101
样例输出
Case #1: 7
Case #2: 5
两个相等的连在一起就是3次,两个不同的就是2次。简单数学。
#include <cstdio> #include <cstring> int main() { int t,ans; char s[110]; scanf("%d",&t); for(int j=1;j<=t;j++) { scanf("%s",s); int l=strlen(s); ans=0; for(int i=0;i<l-1;i++) { if(s[i]==s[i+1]) ans++; } printf("Case #%d: %d ",j,ans+l); } return 0; }