仓库规划
一、概述
本题目主要考察的是列表、分支、循环、输入输出语法的运用,通常不涉及时间复杂度的问题,难度较简单。题目版权归CCF所有,真题跳转官网查看。
真题来源: 仓库规划
官网地址:www.cspro.org(模拟考试入口)
二、题目分析
n 个仓库,每个仓库均有 m 个位置编码,可以看作一个是 n × m n \times m n×m 的矩阵,该矩阵用二维列表即可表示。该二维列表 L 共有 n 个元素(子列表 i ),每个元素(子列表 i )有包含 m 个元素(数字 num )。找上级仓库,就是遍历列表 L ,比较子列表 i 每个元素同其他子列表对应位置元素的大小。当有若干子列表 j 1 , j 2 , j 3 , . . . , j , . . . , j k j_1,j_2,j_3,...,j,...,j_k j1,j2,j3,...,j,...,jk满足每个元素 > 子列表 i 对应位置(下标)的元素,并且子列表 j 在相较于 j 1 , j 2 , j 3 , . . . , j k j_1,j_2,j_3,...,j_k j1,j2,j3,...,jk在列表L中的下标最小,那么子列表 j (仓库j)就是子列表 i (仓库i)的上级仓库,上级仓库编号 = 子列表 j 的下标 + 1;若不存在子列表j,则上级仓库编号 = 0。求每个仓库的上级仓库编号。
三、满分题解
1. 暴力题解
- 第一步,接受参数 n、m ,确定仓库个数和编号个数 。
- 第二步,建立仓库二维列表 n_li ,记录仓库及其编码。创建上级仓库编号列表 store。
- 第三步,第一层循环。遍历二维列表 n_li,记录当前仓库 s 。创建当前仓库可能的上级仓库列表 s_store ,用于记录上级仓库在二维列表中的下标。创建比较结果列表 compare_res ,用于记录当前仓库s同其余仓库每个对应位置的比较结果。
- 第四步,第二层循环。遍历二维列表n_li,每次循环都将其余仓库同仓库s的每一个位置进行比较,并将每个位置的比较结果存放到 compare_res 中,若比较结果都为True(非s的仓库的每一个位置都比仓库s的对应位置大),则将当前遍历的下标存放到