逻辑思维题一:条件组合覆盖

2023-12-28 13:18

本文主要是介绍逻辑思维题一:条件组合覆盖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们知道软件测试对测试人员的逻辑思维要求比较高,而且笔试时经常会出一些逻辑思维方面的问题,今天我们来看一个问题。

题目是这样的:八瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要____人测试?

遇到这样的问题我们应该怎么处理呢?看题目感觉比较抽象,我们可以对此进行转化为条件组合覆盖测试方法。 首先可以对八瓶酒进行编号:a,b,c,d,e,f,g,h; 有毒的酒可以当成一个bug;

测试结果8小时后才会得出,而你只有8个小时的时间。对于这个条件我们应该转换一下思路:一个人其实可以同时喝多瓶酒,所以可以将每个人喝的酒看成一个集合;需要多少人,可以看成最少测试几个集合的组合可以完全覆盖a~h。

我们再想一下,这个题目已经告诉我们了,有一个bug,所以我们可以只要覆盖a~g,7个字母。

所以这个题目可以转化为:最少设计多少集合组合测试能够完全覆盖a~h 8个字母,我们可以假设集合顺序从a到h,最少集合为n个。

所以组合条件可以是:集合1,集合2,集合3....,集合n;集合1+集合2,集合2+集合3,集合3+集合n....,集合n+1;集合1+集合2+集合3,....

最终演变为n+n+n+1=n(n-1)+1,如果要覆盖完全a~g 7个字母,必须是n(n-1)+1>=7,计算得到最小正整数n=3。这个也是此题目的答案,最少需要3个人测试。每个人喝3瓶酒,有好多组合,但集合必须满足集合组合之间有相同的酒,以下给出一个组合:


分析:如果3人都出现中毒,则a酒有毒;如果3人都没中毒,则h酒有毒
          如果第一人中毒,则d酒有毒 如果第二人中毒, f酒有毒;如果第三人中毒,则g酒有毒
    如果第一,二人中毒,第三人没中毒,则b酒有毒;如果第一,三人中毒,第二人没中毒,则c酒有毒 如果第二,三人有问题,第一人没问题,则e酒 有毒。

总结:遇到这种问题,直接通过公式n(n-1)+1>=酒数量-1计算出n的最小正整数,就是需要的最少人数。每个集合的数量=酒数量-1-n, 而且遇到类似问题,可以通过这种条件组合思路去解决问题。

如果此题目换一个问法:八瓶酒,大量检测表明,有可能有一瓶酒有问题,为了检测是否有一瓶酒有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要____人测试?

这篇关于逻辑思维题一:条件组合覆盖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546072

相关文章

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Nginx中location实现多条件匹配的方法详解

《Nginx中location实现多条件匹配的方法详解》在Nginx中,location指令用于匹配请求的URI,虽然location本身是基于单一匹配规则的,但可以通过多种方式实现多个条件的匹配逻辑... 目录1. 概述2. 实现多条件匹配的方式2.1 使用多个 location 块2.2 使用正则表达式

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t