编译环境: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]号元素即可。注意本题有多组用例输入。
代码部分实现: