牛客真题编程——day8

编译环境:c++

1、最大间隔

描述

给定一个递增序列,a1 <a2 <...<an 。定义这个序列的最大间隔为d=max{ai+1 - ai }(1≤i<n),现在要从a2 ,a3 ..an-1 中删除一个元素。问剩余序列的最大间隔最小是多少?

输入描述:

第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。

算法思想:

这道题的思路很简单,题目已经规定好了递增序列,所以只需要存储下前N-1项的最大的后一项-前一项的最大值,打印输出即可。注意有多组用例输入。

代码部分实现:

2、棋子翻转

描述

在 4x4 的棋盘上摆满了黑白棋子,黑白两色棋子的位置和数目随机,其中0代表白色,1代表黑色;左上角坐标为 (1,1) ,右下角坐标为 (4,4) 。

现在依次有一些翻转操作,要对以给定翻转坐标(x,y)(也即第x行第y列)为中心的上下左右四个棋子的颜色进行翻转。

给定两个数组 A 和 f ,分别代表 初始棋盘 和 哪些要进行翻转的位置(x,y) ,请返回经过所有翻转操作后的棋盘。

算法实现:

    题目要求对给定位置的棋子的上下左右四个地方的棋子进行翻转,注意左上起始位(1,1)到右下角(4,4)即可。同时复习了vecttor的size获取长度函数,以及元素的下标表示,find查找函数的应用。对于每个要翻转的棋子,要判断其真实性,即应在0-3范围之间。翻转完所有的棋子,返回改变的A即可。

代码部分实现:

3、矩阵元素相乘

描述

A[n,m]是一个n行m列的矩阵,a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]*...*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j],现输入非负整形的矩阵A[n,m],求MAX(x[i,j]),即所有的x[i,j]中的最大值

算法思想:

    根据矩阵相乘的概念来求即可,即如题目x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,双层循环遍历所有元素,求得每一个元素的x[i,j],然后分别求第i行的相乘、第j行的相乘,注意不要乘第[i][j]号元素即可。注意本题有多组用例输入。

代码部分实现:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值