/ WHOJ / 题库 /

磁铁游戏(文件IO)

磁铁游戏(文件IO)

题目描述

小明是一个疯狂的游戏迷。有一天,小明想玩多米诺骨牌,但他家里没有, 于是他采用矩形磁体代替。每个矩形磁铁有两极:正极(”\(+\)”)和负极(“\(-\)”)。如果把两个磁铁水平方向靠近,就会出现“同极相斥、异极相吸”的现象。一开始,小明在桌子上水平地放上一块磁铁。接下来,小明会把磁铁一块接一块的放在原有磁铁的右端。根据“同极相斥、异极相吸”的原理,小明每放上一块新磁铁,就有可能出现相吸或者相斥的情况。如果新磁铁和原磁铁相吸,它就加入到这个组(一个或多个磁铁连接在一起形成一组),如果新磁铁和原磁铁相斥,它就成为一个新组。如下图,\(1、2、3\) 块磁铁组成第一组,第 \(4\) 块磁铁单独成为一组,第 \(5、6\) 块磁铁组成一组,所以下图一共有三组:
为了描述方便,我们用 \(1\) 表示磁铁的正极(\(+\)),用 \(0\) 表示磁铁的负极(\(-\)),所以每个磁铁可以用“\(10\)”或者“\(01\)”来表示。
现在,小明把他摆放磁铁的顺序告诉你,请帮忙统计出这些磁铁被分为几组?

说明

格式

输入格式

第一行为正整数 \(t(≤5)\),表示数据组数;每组数据中,第一行为正整数 \(n(≤ 10^5)\),表示磁铁数量,第二行包括 \(n\) 个 \(01\) 串:“\(01\)”表示小明把第 \(i\) 个磁铁按照 “\(-\) \(+\)”的位置摆放,“\(10\)”则表示小明把磁铁按照“\(+\) \(-\)”的位置水平摆放。

输出格式

对于每组数据,输出磁铁组的数量。

样例1

输入样例1

2
6
10 10 10 01 10 10
4
01 01 10 10

输出样例1

3
2

来源

地址:芜湖市二十七中电脑班刷题课
作者:汪老师
模拟赛\(T1\)

文件IO

freopen("magnets.in","r",stdin);
freopen("magnets.out","w",stdout);