C++判断连胜

连胜王

题目描述: 在篮球比赛中,连胜是一件让球迷非常兴奋的事情。现给出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 main()
{
	int n;
	cin>>n;
	int max=-1;
	int maxi=-1;
	int cnt=0;
	int pr;
	for(int i=0;i<n;i++)
	{
		int s;
		cin>>s;
		if(pr==s)
		{
			cnt++;
		}
		else if(pr!=s)
		{
			cnt=1;
		}
		if(maxi<cnt)
		{
			maxi=cnt;
			max=s;
		}
		pr=s;
	}
	cout<<max;
	
	
	return 0;
}

数字母

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

输入复制

5

BAACA

输出复制

2

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int maxi=-1;
	int cnt=0;
	char prch;
	for(int i=0;i<n;i++)
	{
		char ch;
		cin>>ch;
		if(ch=='A'&&prch=='A')
		{
			cnt++;
		}
		else if(prch!=ch&&ch=='A')
		{
			cnt=1;
		}
		if(maxi<cnt)
		{
			maxi=cnt;
		}
		prch=ch;
	}
	cout<<maxi;
	
	
	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;
int main()
{
	int n;
	cin>>n;
	int maxi=-1;
	int cnt=0;
	int cnt2=0;
	char prch;
	for(int i=0;i<=n;i++)
	{
		char ch;
		if(i==n)
		{
			ch=0;
		}
		else
		{
			cin>>ch;
		}
		if(ch=='V'&&prch=='V')
		{
			cnt++;
			cnt2++;
		}
		else if(prch!='V'&&ch=='V')
		{
			cnt++;
			cnt2=1;
		}
		else if(ch=='X')
		{
			cnt--;
			cnt2=0;
		}
		else if(ch!='V'&&prch=='V'&&cnt2>2)
		{
			cnt=cnt+(cnt2-2);
		}
		prch=ch;
	}
	cout<<cnt;
	
	
	return 0;
}

第二种(只要开始连中,就不断计算奖励的积分)

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int maxi=-1;
	int cnt=0;
	int cnt2=0;
	char prch;
	for(int i=0;i<n;i++)
	{
		char ch;
		cin>>ch;
		if(ch=='V'&&prch=='V')
		{
			cnt++;
			cnt2++;
		}
		else if(prch!='V'&&ch=='V')
		{
			cnt++;
			cnt2=1;
		}
		else if(ch=='X')
		{
			cnt--;
			cnt2=0;
		}
		if(cnt2>2)
		{
			cnt++;
		}
		prch=ch;
	}
	cout<<cnt;
	
	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值