数组----一维数组之连续性问题(c++)(谁想免费学c++就来此关注)

连胜王
题目描述
在篮球比赛中,连胜是一件让球迷非常兴奋的事情。现给出n 场比赛的获胜队伍编号,请求出哪个队伍连胜的场次最多?
本题的输入确保获得连胜场次最多的球队,只有 1 个。 比如,输入 6 场比赛获胜队伍数据如下:1 2 2 2 6 6; 那么,1 号队没有获得过连胜,2 号队连胜 3场,6 号队连胜 2 场,获得连胜场次最多的球队是 2 号队。
输入
第 1 行有一个整数 n ,代表比赛的场数。
(5≤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==pr)
		{
			cnt++;
		}
		else
		{
			cnt = 1;
		}
		if(cnt>max)
		{
			max = cnt;
			maxi = ch;
		}
		pr = ch;
	}
	
	
	
	cout<<maxi;
	return 0;
}

数字母
题目描述
小明喜欢研究字符串。
这天,小明随手在草稿纸上写下了一个大写字母字符串。此时,班长把成绩报告单发到了每位同学的手 中。小明看到自己每门都是 `A` (优秀),非常高兴,灵光一闪想到一个问题: 在刚刚写下的字符串中, 字母 `A` 最多连续出现了多少次呢?
小明立刻数了起来,但这个字符串实在是太长了,希望你帮帮他。
输入
第一行包含一个整数 N ,表示字符串长度。
第二行包含一个字符串。
输出
第一行包含一个整数,表示该字符串中字母 `A` 最多连续出现的次数。
#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++)
	{
		char ch;
		cin>>ch;
		if(ch=='A'&&pr=='A')
		{
			cnt++;
		}
		else if(ch=='A')
		{
			cnt = 1;
		}
		else
		{
			cnt = 0;
		}
		if(cnt>max)
		{
			max = cnt;
			maxi = ch;
		}
		pr = ch;
	}
	
	
	
	cout<<max;
	return 0;
}

投篮
题目描述
小明每次必须投满规定的积分才能结束投篮,积分规则是这样的:小明每投中一个球得 1 分,如果没投中但 球碰到了篮框、篮板或篮网则既不得分也不扣分,如果球啥也没碰到(俗称三不沾)则倒扣 1 分,作为奖励小 明如能连续投中 3 球则额外加 1 分,如连续投中 4 球则额外加 2 分,依次类推,即连续投中 K 球(K≥3)则额 外加 K−2 分。
教练每次给小明计分都很辛苦,于是他要求小明设计一个能自动计分的程序,小明觉得这个程序也很简单, 于是他把这个任务又交给了你!
输入
输入数据共有两行,第一行为一个正整数 n,表示小明共进行了 n 次投篮。
第二行为一个由 n 个字符组成的字符串,该字符串只包含三种字符,分别是
大写字母 V,T,X,其中 V 表示投中了, T 表示没投中但不用扣分, X 表示要
扣 1 分。
输出
输出一行仅有一个整数为小明的得分
#include <iostream>
using namespace std;
int main()
{
	int max,cnt,zf;
	char pr;
	int n;
	cin>>n;
	max = 0;
	cnt = 0;
	pr = '\0';
	zf = 0;
	
	
	for(int i = 0;i<n;i++)
	{
		char ch;
		cin>>ch;
		if(ch=='V'&&ch==pr)
		{
			cnt++;
			zf++;
			if(cnt>=3)
			{
				zf++;
			}
		}
		
		else if(ch=='V')
		{
			cnt = 1;
			zf++;
		}
		
		
		else if(ch=='T')
		{
			cnt = 0;
		}
		
		else if(ch=='X')
		{
			cnt = 0;
			zf--;
		}
		
		
		pr = ch;
	}
		
	cout<<zf;	
	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;
}

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 二维数组双线性插值是一种用于在二维网格进行插值的方法。它的目标是通过已知的四个相邻点的值,来估计在指定位置的未知点的值。这种插值方法基于两条直线的插值原理,其一条直线与另一条直线的交点处就是未知点的值。 具体的计算过程如下: 1. 首先,找到指定位置在网格的四个相邻点P1、P2、P3和P4。 2. 然后,分别计算相邻点P1和P2处于指定位置的水平距离和相邻点P1和P3处于指定位置的垂直距离。这两个距离用于确定未知点在水平和垂直方向上的位置权重。 3. 接下来,使用以下公式计算未知点的估计值: 值 = P1值 * (1-水平权重) * (1-垂直权重) + P2值 * 水平权重 * (1-垂直权重) + P3值 * (1-水平权重) * 垂直权重 + P4值 * 水平权重 * 垂直权重 其,水平权重和垂直权重分别为指定位置与相邻点之间的水平距离和垂直距离除以网格的水平和垂直间距。 4. 最后,计算出的估计值即为未知点的值。 二维数组双线性插值在图像处理和图形广泛应用,可以用于图像的放大、缩小和旋转等操作,以及曲面绘制和纹理映射等领域。它能够提供更平滑和连续的插值结果,相对于简单的线性插值方法具有更高的精度和效果。 ### 回答2: 二维数组的双线性插值是一种图像处理方法,用于在离散采样的二维数组插值计算给定点的像素值。 双线性插值的基本思是通过对目标点周围的四个采样点进行加权平均来计算目标点的像素值。假设目标点的坐标为(x, y),四个采样点的坐标分别为(x1, y1)、(x1, y2)、(x2, y1)和(x2, y2)。首先计算目标点与四个采样点的距离比例: dx = (x - x1) / (x2 - x1) dy = (y - y1) / (y2 - y1) 然后,利用这两个距离比例对四个采样点进行加权计算。对于目标点的像素值,可以通过以下公式进行计算: P = (1 - dx) * (1 - dy) * A + dx * (1 - dy) * B + (1 - dx) * dy * C + dx * dy * D 其,A、B、C和D分别代表四个采样点的像素值。 在实际计算,为了避免越界问题,需要判断目标点的坐标是否超出了二维数组的索引范围,并进行相应的处理。如果超出范围,则可以选择使用边界像素值或者进行边界处理。 双线性插值是一种简便而有效的插值方法,可以提高图像处理的质量,在图像放大缩小、旋转、扭曲等操作被广泛应用。 ### 回答3: 双线性插值是一种用于在二维网格上进行插值的方法,其所需值位于已知的四个邻近点上。这种方法常用于图像处理和计算机图形。双线性插值的思是通过对四个邻近点的加权平均来估计一个新的点的值。 具体而言,双线性插值可以通过以下步骤实: 1. 首先,给定一个二维网格,我们需要确定一个待插值点的坐标(x,y)。这个点的坐标应该落在已知数据点的内部。 2. 通过查找已知数据点的坐标,找到待插值点周围的四个邻近点。这四个邻近点的坐标可以通过向下取整方式计算得到: X0 = floor(x) X1 = X0 + 1 Y0 = floor(y) Y1 = Y0 + 1 3. 对于待插值点的x坐标,首先使用以下公式计算两个水平方向上的插值权重: weightX = (x - X0) / (X1 - X0) 4. 对于待插值点的y坐标,然后使用以下公式计算两个垂直方向上的插值权重: weightY = (y - Y0) / (Y1 - Y0) 5. 然后,根据邻近点的值和插值权重,使用以下公式进行双线性插值计算: interpolatedValue = (1 - weightX) * (1 - weightY) * value(X0, Y0) + (1 - weightX) * weightY * value(X0, Y1) + weightX * (1 - weightY) * value(X1, Y0) + weightX * weightY * value(X1, Y1) 其,value(X, Y)表示已知数据点(X, Y)的值。 6. 最后,根据计算得到的插值值,我们可以得出待插值点的值。 双线性插值是一种简单而有效的插值方法,可以用来填补二维网格数据的空白点。在图像处理,它可以用于放大或缩小图像,使得图像在不失真的情况下能够适应不同的大小。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值