给定 n 个测试用例和 m 个代码模块,测试用例的覆盖情况用一个二维数组 cases 表示,其中 cases[i][j] 为 1 表示第 i 个测试用例覆盖了第 j 个模块,为 0 表示未覆盖。要求找出一个最小的测试用例集合,使得该集合覆盖所有模块,即所有模块至少被一个测试用例覆盖。如果不存在这样一个集合,则返回 −1。
在模块测试场景中,共有 n 个测试用例和 m 个代码模块。所有测试用例对代码模块的覆盖情况记录在一个二维矩阵 cases 中:cases[i][j] 表示第 i 个测试用例是否覆盖第 j 个代码模块。若 cases[i][j] 为 1,表示覆盖;若为 0,表示未覆盖。
现在要从全部测试用例中挑选若干测试用例组成一个集合。如果对于任意一个代码模块,该集合中都至少存在一个测试用例覆盖了它,则称这个集合完成了全模块覆盖。集合的大小定义为集合中包含的测试用例数量。
请计算完成全模块覆盖所需的最小集合大小。如果没有任何测试用例集合能够完成全模块覆盖,则输出 -1。
约束条件
1 到 20 之间(含端点)。开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册