牛为什么过马路

尽管科学界已经深入探究了鸡为什么过马路这一问题,令人惊讶的是,关于牛过马路的的研究文献却很少发表。

农夫约翰很清楚这一问题的重要性,当一所当地的大学联系他,要求他协助进行一项关于奶牛为什么要过马路的科学研究时,他非常激动并热心的表示愿意帮忙。

作为研究的一部分,约翰被要求记录下他的每头奶牛穿过马路的次数。

他仔细记录了奶牛的位置数据,在一天时间里,他进行了 N 次观察,每次观察都会记录一头牛的 ID (约翰共有 10 头牛,ID 从 1 到 10)以及牛在路的哪一边。

根据约翰记录的数据,请帮助他计算可以确定的奶牛穿过马路的次数。

当连续观察到一头奶牛在道路的两侧时,就可以确定它穿过了一次马路。

输入格式

第一行包含整数 N。

接下来 N 行,用来描述观察结果,首先包含一个整数表示观察奶牛的 ID,然后包含一个整数 0 或 1,0 表示它在马路一边,1 表示它在马路另一边。

输出格式

输出可以确认发生的穿过马路的次数。

数据范围

1≤N≤100,

输入样例:

8
3 1
3 0
6 0
2 1
4 1
3 0
4 0
3 1

输出样例:

3

样例解释

在此样例中,33 号奶牛穿过马路两次,先 1→0,然后 0→1。

4 号奶牛穿过马路一次 1→0。

2 号和 6 号奶牛没有穿过马路。

源代码

#include <iostream>
#include <vector>//动态数组
using namespace std;
typedef pair<int,int> PII;//数对
vector<PII> A;
int n,ans=0;
int num,o;
int main()
{
	cin>>n;
	while(n--)
	{
		cin>>num>>o;
		int flag=0;//查找标志
		for(int i = 0;i < A.size();i ++ )//存入数据之前先查找是否有此数据
		{
			if(A[i].first==num)//找到了此数据
			{
				flag=1;//定义标志为找到
				if(A[i].second!=o)//若此数据与之前数据奶牛站位不同
				{
					ans++;//答案++
					A[i].second=o;//更新为现在的数据站位
				}
			}
		} 
		if(flag==0)//若没有找到
		{
			A.push_back({num,o});//存入数据
		}
	}
	cout<<ans;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/couchpotatoshy/article/details/124546258