维数组-连续性问题

连胜王

题目描述

在篮球比赛中,连胜是一件让球迷非常兴奋的事情。现给出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<bits/stdc++.h>
using namespace std;
int n,a[200],ct=1;
int main(){
    cin>>n;
    for(int i=1; i<=n; i++)
        cin>>a[i];
    for(int i=1; i<=n; i++)
    {
    	if(a[i]==a[i+1])ct++;
		else
		{
			if(ct==1)continue;
			cout<<a[i]<<" "<<ct<<endl;
			ct=1;
		} 
	}
    return 0;
}
青少年编程
V

 数字母

题目描述

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

输入

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

输出

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

输入复制

5
BAACA


输出复制

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];
	}
	char lastwin ='A';
	int wincnt = 0;
	char maxwin = 'A';
	int maxcnt = 0;
	for(int i=0;i<n;i++)
	{
		if(lastwin == a[i])
		{
			wincnt++;
			
		}
		else
		{
			wincnt=0;
		}
		if(wincnt>maxcnt)
		{
			maxcnt =wincnt;
		}
	}
	cout<<maxcnt;
	
	
	return 0;
}

投篮

题目描述

小明每次必须投满规定的积分才能结束投篮,积分规则是这样的:小明每投中一个球得 1 分,如果没投中但
球碰到了篮框、篮板或篮网则既不得分也不扣分,如果球啥也没碰到(俗称三不沾)则倒扣 1 分,作为奖励小
明如能连续投中 3 球则额外加 1 分,如连续投中 4 球则额外加 2 分,依次类推,即连续投中 K 球(K≥3)则额
外加 K 2 分。
教练每次给小明计分都很辛苦,于是他要求小明设计一个能自动计分的程序,小明觉得这个程序也很简单,
于是他把这个任务又交给了你!

【样例解释】

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

输入

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

输出

输出一行仅有一个整数为小明的得分。
#include<iostream>
using namespace std;
int a[100];
int n;
int main()
{
	cin>>n;
	int sum;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	char lastwin ='v';
	int wincnt = 0;
	char maxwin = 'v';
	int maxcnt = 0;
	for(int i=0;i<n;i++)
	{
		if(a[i]= 'x')
		{
			sum=sum-1;
			
		}
		else if(a[i]=='t')
		{
			sum=sum+0;
			wincnt = 0;
		}
		else if(a[i]=='v')
		{
			sum=sum+1;
			wincnt++;
		}
		
		if(maxcnt>=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

输出

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

代码

#include <iostream>
using namespace std;
int main()
{
	int n,cnt2[200],a[200],max,maxi,x[200],cnt,pr;
	cin>>n>>x[0];
	pr = 0;
	max = 0;
	cnt = 1;
	
	
	for(int i = 0;i<n;i++)
	{
		cnt2[i] = 0;
	}
	
	
	for(int i = 0;i<n;i++)
	{
		x[i+1] = (x[i]*3703+1407)%n+1;
		a[i] = x[i];
	}
	
	
		
		
	for(int i = 0;i<=n;i++)
	{
		if(a[i]==pr)
		{
			cnt++;
		}
		else
		{
			for(int j = cnt;j>=1;j--)
			{
				cnt2[pr] = cnt2[pr]+j;
			}
			cnt = 1;
		}
		pr = a[i];
	}
	
	
	
	for(int i = 0;i<n;i++)
	{
		if(max<cnt2[i])
		{
			max = cnt2[i];
			maxi = i;
		}
	}
	
	
	cout<<max;
	
	
	
	return 0;
}

温度统计员

题目描述

炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。
最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续 N(1≤N≤10000)天的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数(相等也计入递增)。

输入

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

输出

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

代码

#include <iostream>
using namespace std;
int main()
{
	int n,max,maxi,cnt,pr;
	cin>>n;
	pr = 0;
	max = 0;
	cnt = 1;
		
	for(int i = 0;i<n;i++)
	{
		int ch;
		cin>>ch;
		if(ch==pr+1||cnt==pr)
		{
			cnt++;
		}
		else
		{
			cnt = 1;
		}
		if(cnt>max)
		{
			max = cnt;
			maxi = ch;
		}
		pr = ch;
	}
	cout<<max+1;
	return 0;
}

连续最长的偶数

题目描述

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

输入

第 1 行输入一个整数 n (n≤100);
第 2 行读入 n 个整数,数字之间用空格隔开;

输出

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

代码

#include <iostream>
using namespace std;
int main()
{
	int n,max,maxi,cnt,pr;
	cin>>n;
	pr = 0;
	max = 0;
	cnt = 1;
	
	
	
	
	
		
	for(int i = 0;i<n;i++)
	{
		int ch;
		cin>>ch;
		if(ch%2==0&&pr%2==0)
		{
			cnt++;
		}
		else
		{
			cnt = 0;
		}
		if(cnt>max)
		{
			max = cnt;
			maxi = ch;
		}
		pr = ch;
	}
	
	
	
	cout<<max+1;
	return 0;
}

连续非素数的最大长度

题目描述

给出一个正整数 n ( 2≤n≤1000000 ),例如 n=30 ,在1,2,3,…30 中,连续的非素数有:
4长度为 1
6 长度为 1
8 9 10 长度为 3
12 长度为 1
14 15 16 长度为 3
18 长度为 1
20 21 22 长度为 3
24 25 26 27 28 长度为5
30 长度为 1

其中,最大长度为 5 ,即有连续的5 个非素数。

输入

一个整数 n 。

输出

一个整数,即连续非素数最大长度。

代码

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值