注意
以下题目均为回忆版题目,可能有错漏。而且样例数据和数据范围缺失或与考场不同,仅供参考,请谅解!
第一场题目一:查找行列式等于K的2x2子矩阵
问题描述
给定一个 n 行 m 列的整数矩阵和一个整数 K,请找出所有满足特定条件的 2x2 子矩阵。
任务
编写程序,找出矩阵中所有行列式值恰好等于给定整数 K 的 2x2 子矩阵。
输入格式
- 第一行包含三个整数
n、m和K(2 ≤ n, m ≤ 100) - 接下来
n行,每行包含m个整数,表示矩阵元素(元素值在整数范围内)
输出格式
输出找到的符合条件的 2x2 子矩阵的个数
示例
输入:
3 3 1
1 2 3
4 5 6
7 8 9
输出:
1
思路及答案
直接双重循环查找即可,注意边界条件:
c
第一场题目二:统计互为逆序数的数字对
问题描述
给定 n 个正整数,统计其中可以配对的"互为逆序数"的数字对数量。
互为逆序数的定义:两个数 a 和 b,如果满足以下条件,则称它们互为逆序数:
- 将
a的各位数字逆序排列后得到的数等于b - 将
b的各位数字逆序排列后得到的数等于a
输入格式
- 第一行包含一个整数
n(1 ≤ n ≤ 1000) - 第二行包含
n个正整数,以空格分隔
输出格式
输出一个整数,表示找到的互为逆序数的数字对的数量。
示例
输入1:
5
12 21 123 321 456
输出1:
2
解释:有两对互为逆序数:(12,21) 和 (123,321)
输入2:
4
10 1 100 1000
输出2:
0
解释:没有互为逆序数的数字对(虽然10的逆序是1,但1的逆序不是10)
思路及答案
需要注意06和60不属于逆序数,所以要两边都倒一下判断。另外下面代码示例里用了used标识已经做过的数,是建立在没有重复数的基础上。由于未见原题,不可判断是否可以使用。
c
第二场题目一:统计特定模式的2×2子矩阵
问题描述
给定一个 n 行 m 列的整数矩阵,以及四个整数 p, q, s, r。统计矩阵中有多少个 2×2 子矩阵的等于给定的 2×2 子矩阵
输入格式
- 第一行包含两个整数
n和m(2 ≤ n, m ≤ 100),表示矩阵的行数和列数 - 接下来
n行,每行包含m个整数,表示矩阵元素 - 最后两行为需要匹配的 2×2 子矩阵
输出格式
输出一个整数,表示满足条件的 2×2 子矩阵的数量。
示例
示例1
输入:
3 4
1 2 3 4
5 6 7 8
9 10 11 12
5 9
6 10
输出:
1
示例2
输入:
3 3
1 1 1
1 1 1
1 1 1
1 1
1 1
输出:
4
思路及答案
直接遍历查找即可:
c
第二场题目二:寻找位数平衡点
问题描述
给定一串整数,每个整数都占用一定的位数(即十进制表示下的数字个数)。我们需要在这串整数中找到一个"位数平衡点"。
位数平衡点的定义:
对于一个整数序列,如果存在某个位置 i(0 ≤ i < n,其中n是整数个数),使得位置 i 之前(不包括位置i本身)所有整数的位数之和等于位置 i 之后(不包括位置i本身)所有整数的位数之和,则称位置 i 为"位数平衡点"。
输出格式
- 如果找到位数平衡点,输出该平衡点的位置(索引,从0开始)
- 如果没有位数平衡点,输出"None"(不含引号)
示例
示例1
输入:
1 22 333 4444
输出:
None
示例2
输入:
123 45 78 9 12 43
输出:
2
思路及答案
维护一个前序和和后序和即可,遍历查找时一减一加,注意第i位不包括。
c
第三场题目一:最大二阶子式主对角线差绝对值
问题描述
给定一个 m×nm \times n 的整数矩阵,计算该矩阵中所有 2×22 \times 2 子矩阵的主对角线差值的绝对值的最大值。
对于一个 2×22 \times 2 子矩阵:
[ai,jai,j+1ai+1,jai+1,j+1]\begin{bmatrix} a_{i,j} & a_{i,j+1} \\ a_{i+1,j} & a_{i+1,j+1} \end{bmatrix}
其中 0≤i<m−10 \leq i < m-1,0≤j<n−10 \leq j < n-1
主对角线差值的绝对值定义为:
∣ai,j−ai+1,j+1∣|a_{i,j} - a_{i+1,j+1}|
需要找出所有可能的 2×22 \times 2 子矩阵中,这个值的最大值。
输入格式
- 第一行包含两个整数 mm 和 nn(2≤m,n≤1002 \leq m, n \leq 100),表示矩阵的行数和列数
- 接下来 mm 行,每行包含 nn 个整数,表示矩阵元素 ai,ja_{i,j}
输出格式
输出一个整数,表示所有 2×22 \times 2 子矩阵的主对角线差值绝对值的最大值。
示例
示例1
输入:
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出:
5
示例2(根据题目给出的数据)
输入:
2 5
3 1 0 6 0
1 0 1 1 1
输出:
5
思路及答案
同样也是直接双重循环查找即可,注意边界条件:
c
第三场题目二:奇数位数字之和为偶数的数
问题描述
给定 nn 个整数,找出其中所有满足以下条件的数:该数的奇数位(从最低位开始,第一位为奇数位,第二位为偶数位,依此类推)上的数字之和为偶数。
输入格式
- 第一行包含一个整数 nn(1≤n≤10001 \leq n \leq 1000),表示数字的个数
- 第二行包含 nn 个整数,以空格分隔
输出格式
如果存在满足条件的数:
- 第一行输出满足条件的数的个数 kk,后跟冒号
: - 第二行输出这 kk 个数,按照它们在输入中出现的顺序输出,用空格分隔
如果不存在满足条件的数:
- 输出一行:
0:
示例
示例1
输入:
5
4 1 24 1578 369
输出:
3 : 4 24 369
思路及答案
直接模拟每个数的奇数位和,然后判断即可:
