作业 一维数组-连续性问题

目录

连胜王

数字母

投篮

分数统计

温度统计员

连续最长的偶数

连胜统计


连胜王

题目描述

在篮球比赛中,连胜是一件让球迷非常兴奋的事情。现给出n场比赛的获胜队伍编号,请求出哪个队伍连胜的场次最多?

本题的输入确保获得连胜场次最多的球队,只有1 个。

比如,输入6 场比赛获胜队伍数据如下:1 2 2 2 6 6;

那么,1 号队没有获得过连胜,2 号队连胜3场,6 号队连胜2 场,获得连胜场次最多的球队是2 号队。

输入

第1 行有一个整数n ,代表比赛的场数。(5≤n≤100)

第2 行有n 个整数,分别代表了每场比赛获得胜利的球队的编号。

输出

输出连胜场次最多球队的编号。

输入复制

6

1 2 2 2 6 6

输出复制

2

#include <iostream>
using namespace std;
int a[100];
int n;
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int lastwin = a[0];
	int wincnt = 1;
	int maxwin = a[0];
	int maxcnt = 1;
	for(int i = 1;i<n;i++)
	{
		if(a[i] == lastwin)
		{
			wincnt++;
		}
		else
		{
			wincnt = 1;
		}
		if(maxcnt<wincnt)
		{
			maxcnt = wincnt;
			maxwin = a[i];
		}
		lastwin = a[i];
	}
	cout<<maxwin;
	return 0;
}

数字母

题目描述

小明喜欢研究字符串。

这天,小明随手在草稿纸上写下了一个大写字母字符串。此时,班长把成绩报告单发到了每位同学的手中。小明看到自己每门都是`A` (优秀),非常高兴,灵光一闪想到一个问题:在刚刚写下的字符串中,字母`A` 最多连续出现了多少次呢?

小明立刻数了起来,但这个字符串实在是太长了,希望你帮帮他。

输入

第一行包含一个整数N ,表示字符串长度。

第二行包含一个字符串。

输出

第一行包含一个整数,表示该字符串中字母`A` 最多连续出现的次数。

输入复制

5

BAACA

输出复制

2

#include <iostream>
using namespace std;
char a[100];
int n;
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int lastiner= 'A';
	int wincnt = 0;
	int maxwin = 'A';
	int maxcnt = 0;
	for(int i = 0;i<n;i++)
	{
		if(a[i] == 'A')
		{
			wincnt++;
		}
		else
		{
			wincnt = 0;
		}
		if(maxcnt<wincnt)
		{
			maxcnt = wincnt;
		}
	}
	cout<<maxcnt;
	return 0;
}

投篮

题目描述

小明每次必须投满规定的积分才能结束投篮,积分规则是这样的:小明每投中一个球得1 分,如果没投中但球碰到了篮框、篮板或篮网则既不得分也不扣分,如果球啥也没碰到(俗称三不沾)则倒扣1 分,作为奖励小明如能连续投中3 球则额外加1 分,如连续投中4 球则额外加2 分,依次类推,即连续投中K 球(K≥3)则额外加K−2 分。

教练每次给小明计分都很辛苦,于是他要求小明设计一个能自动计分的程序,小明觉得这个程序也很简单,于是他把这个任务又交给了你!

输入

输入数据共有两行,第一行为一个正整数n,表示小明共进行了n 次投篮。第二行为一个由n 个字符组成的字符串,该字符串只包含三种字符,分别是大写字母V,T,X,其中V 表示投中了,T 表示没投中但不用扣分,X 表示要扣1 分。

输出

输出一行仅有一个整数为小明的得分。

【样例解释】

先连续投中5 个球,得到5+3 分,其中3 分为额外奖励到的。接着第六个球没投中也没扣分,第七个球扣了1 分,最后一球得1 分,因此答案为8 。

输入复制

8

VVVVVTXV

输出复制

8

#include <iostream>
using namespace std;
char a[100];
int n;
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int sum = 0;
	char lastiner= 'V';
	int wincnt = 0;
	char maxiner = 'V';
	int maxcnt = 0;
	for(int i = 0;i<n;i++)
	{
		if(a[i] == 'X') 
		{
			sum = sum-1;
			wincnt = 0;
		}
		else if(a[i] == 'V')
		{
			sum = sum+1;
			wincnt++;
		}
		if(wincnt>=3) sum++;
	}
	cout<<sum;
	return 0;
}

分数统计

题目描述

有n 个球队1≤n≤100 ,编号为1,2,...,n,共进行n 场比赛。每场比赛有一个胜队。计分方法如下:是连胜中的第一次胜利,则本次胜利得1 分。

是连胜中的第二次胜利,则本次胜利得2 分。

是连胜中的第三次胜利,则本次胜利得3 分。

连胜超过三次以上的胜场,每场得3 分。

例如n=12 ,比赛的胜队为1 2 1 1 3 2 1 1 1 1 4 2,计分如下:

队1 1+1+2+1+2+3+3=13 分

队2 1+1+1=3 分

队3 1 分

队4 1

分其余队为0 分。

输入

读入n,x1两个整数,n 为球队数,x1 为第一次胜队号

第xi场比赛(i≥2)胜队的编号由以下公式确定:

xi = ( ( xi-1 * 3703 + 1047 ) mod n)+1

输出

一个整数,即得分最多队的分数。

输入复制

10 5

输出复制

3

#include <iostream>
using namespace std;
char a[100];
int cnt[100];
int n,x1;
int main()
{
	cin>>n>>x1;
	a[0] = x1;
	for(int i = 0;i<n;i++)
	{
		a[i] = (a[i-1]*3703 + 1047)%n+1;
	}
	int lastwiner = a[0];
	int wincnt = 1;
	int maxwinner = a[0];
	int maxcnt = 1;
	int sum = 0;
	for(int i = 1;i<n;i++)
	{
		if(a[i] == lastwiner)
		{
			wincnt++;
		}
		else
		{
			wincnt = 1;
		}
		if(maxcnt<wincnt)
		{
			maxcnt = wincnt;
			maxwinner = a[i];
		}
		if(wincnt == 1) sum = 1;
		else if(wincnt == 2) sum = 2;
		else if(wincnt >= 3) sum = 2;
		
		cnt[a[i]] = cnt[a[i]] + sum;
		
		lastwiner = a[i];
	}
	int summax = -1;
	for(int i = 0;i<n;i++)
	{
		if(summax<cnt[i])
		{
			summax = cnt[i];
		}
	}
	cout<<summax;
	return 0;
}

温度统计员

题目描述

炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。

最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。

经历千辛万苦,他收集了连续N(1≤N≤10000)天的最高气温数据。

现在,他想知道最高气温一直上升的最长连续天数(相等也计入递增)。

输入

第1 行:一个整数N 。

第2 行:N 个空格隔开的整数,第xi 个整数表示第i 天的最高气温。(0≤ai≤109)。

输出

一个整数,表示最高气温一直上升的最长连续天数。

输入复制

10

1 2 3 2 4 5 6 8 5 9

输出复制

5

#include <iostream>
using namespace std;
int a[100];
int n;
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int lastT = a[0];
	int cnt = 1;
	int maxcnt = 1;
	for(int i = 1;i<n;i++)
	{
		if(a[i] >= lastT)
		{
			cnt++;
		}
		else
		{
			cnt = 1;
		}
		if(maxcnt<cnt)
		{
			maxcnt = cnt;
		}
		lastT = a[i];
	}
	cout<<maxcnt;
	return 0;
}

连续最长的偶数

题目描述

从键盘读入n 个整数,请问这n 个整数中,连续的偶数最多有多少个?

输入

第1 行输入一个整数n (n≤100);

第2 行读入n 个整数,数字之间用空格隔开;

输出

输出一个整数,代表连续偶数的最长序列有多长。

输入复制

10

1   2   8   47   2   3374   944   992   198   100

输出复制

6

#include <iostream>
using namespace std;
int a[100];
int n;
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int cnt = 0;
	int maxcnt = 0;
	for(int i = 1;i<n;i++)
	{
		if(a[i] % 2 == 0)
		{
			cnt++;
		}
		else
		{
			cnt = 0;
		}
		if(maxcnt<cnt)
		{
			maxcnt = cnt;
		}
	}
	cout<<maxcnt;
	return 0;
}


连胜统计

题目描述

在篮球比赛中,连胜是一件让球迷非常兴奋的事情。现给出n场比赛的获胜队伍编号,请输出每个球队连胜的场数,要求至少连胜2场才能列入统计范围。

比如,输入获得胜利的球队编号为:9 9 1 2 2 2 9 9 3 3 3 2,那么输出结果如下

9        2

2        3

9        2

3        3

输出的含义是:9 号球队连胜2 场、2 号球队连胜3 场、9 号球队连胜2 场、3 号球队连胜3 场。

输入

第1 行有一个整数n ,代表比赛的场数。(5≤n≤100 )

第2 行有n 个整数,分别代表了每场比赛获得胜利的球队的编号。(球队编号在1,109 范围内)

输出

输出若干行,每行2 个整数,按照读入的顺序输出获得连胜的球队的编号以及连胜的场次。

输入复制

12

9  9  1  2  2  2  9  9  3  3  3  2

输出复制

9   2

2   3

9   2

3   3

#include <iostream>
using namespace std;
int a[100];
int n;
int main()
{
	cin>>n;
	int cnt = 0;
	int maxcnt = 0;
	for(int i = 1;i<n;i++)
	{
		if(a[i] % 2 != 0)
		{
			cnt++;
		}
		else
		{
			cnt = 0;
		}
		if(maxcnt<cnt)
		{
			maxcnt = cnt;
		}
	}
	cout<<maxcnt;
	return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李余博睿(新疆)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值