杯子

软件测试基础知识题目

橙三吉。 提交于 2019-11-30 16:38:26
基础题(65分) 1、什么是需求?需求有哪些来源?(3分) 答:需求的分类:直接需求(用户直接需求告知要求)和间接需求(行业需求要求);需求的定义:准确的描述用户需求; 来源:行业、用户、团队、运营、客服、自己(调研反馈、数据分析、竞品分析);数据分析:产品功能使用情况,如行业报告、产品后台数据等挖掘用户需求;调研反馈:通过市场调研或用户调研等方式挖掘用户真实需求;竞品分析:确立竞品分析的目的,然后分析竞品的功能和内容都有什么,通过与竞品的对比得出自身产品的需求; 直白点说:01:来源客户要求;02行业要求;03公司内部分析的需求; 2、为什么说需求需要测试,如何测试?(4分) 答:需求是标准,贯穿整个项目,是项目中最重要的标准,必须经过多方面(技术、角色:用户、产品、测试、开发)测试,才能合理安排项目进度和技术分析设计,确保需求符合用户要求和课实现。 测试方法:01评审,参加人员(用户、产品、测试、开发);02场景和技术模拟,确保可实现;03行业调研; 3、单元测试的定义?测试意义是什么?(3分) 答:指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块

【POJ3414】Pots

匆匆过客 提交于 2019-11-30 08:34:01
本题传送门 本题知识点:宽度优先搜素 + 字符串 题意很简单,如何把用两个杯子,装够到第三个杯子的水。 操作有六种,这样就可以当作是bfs的搜索方向了 // FILL(1) 把第一个杯子装满 // FILL(2) 把第二个杯子装满 // POUR(1,2) 把第一个杯子的水倒进第二个杯子 // POUR(2,1) 把第二个杯子的水倒进第一个杯子 // DROP(1) 把第一个杯子的水都倒掉 // DROP(2) 把第二个杯子的水都倒掉 本题的难点是如何记录路径,我们可以用一个巧妙的方法去解决掉,详细请看代码 // POJ 3414 #include<iostream> #include<cstdio> #include<string> #include<queue> using namespace std; bool take[102][102], ok; int A, B, C; struct node{ string str; int l, r, pla[102], cnt; // cnt 记录有多少条路径 }; queue<node> que; string str[] = { "FILL(1)", "FILL(2)", "POUR(1,2)", "POUR(2,1)", "DROP(1)", "DROP(2)" }; void show(int len, int pla[]

同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别

主宰稳场 提交于 2019-11-29 17:26:26
原文链接https://www.cnblogs.com/euphie/p/6376508.html POSIX 同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。 POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO 按POSIX的描述似乎把同步和阻塞划等号,异步和非阻塞划等号,但是为什么有的人说同步IO不等于阻塞IO呢?先来说说几种常见的IO模型吧。 IO模型 这里统一使用Linux下的系统调用recv作为例子,它用于从套接字上接收一个消息,因为是一个系统调用,所以调用时会 从用户进程空间切换到内核空间运行一段时间再切换回来 。默认情况下recv会等到网络数据到达并且复制到用户进程空间或者发生错误时返回,而第4个参数flags可以让它马上返回。 阻塞IO模型 使用recv的默认参数一直等数据直到拷贝到用户空间,这段时间内进程始终阻塞。A同学用杯子装水,打开水龙头装满水然后离开。这一过程就可以看成是使用了阻塞IO模型,因为如果水龙头没有水,他也要等到有水并装满杯子才能离开去做别的事情。很显然,这种IO模型是同步的。 非阻塞IO模型 改变flags,让recv不管有没有获取到数据都返回

倒水问题UVA 10603——隐式图&&Dijkstra

久未见 提交于 2019-11-29 04:57:41
题目 给你三个容量分别为 $a,b,c$ 的杯子,最初只有第3个杯子装满了水,其他两个杯子为空。最少需要到多少水才能让一个某个杯子中的水有 $d$ 升呢?如果无法做到恰好 $d$ 升,就让某个杯子里的水是 ${d}'$ 升,其中 ${d}' < d$ 并且尽量接近 $d$。($1 \leq a,b,c,d \leq 200$) 分析 设第一个杯子有 $v_0$ 升水、第二个杯子有 $v_1$ 升水、第三个杯子有 $v_2$ 升水,称这为一个状态 $((v_0, v_1, v_2))$,而从一个杯子向另一个杯子倒水则扩展出下一个状态,设倒水量为两个状态间的距离。类似于Dijkstra,因此能保证每次从队列中弹出的都是距离最小的,每次都更新一下答案。 由于总水量是不变的,也就是说 $v_0, v_1$ 确定时,$v_2$ 也随之确定,所以实际状态数为 $200^2$. #include<cstdio> #include<cstring> #include<queue> using namespace std; struct Node { int v[3], dist; bool operator < (const Node& rhs) const { return dist > rhs.dist; } }; const int maxn = 200 + 5; int mark[maxn

冰阔落 I

不羁岁月 提交于 2019-11-28 16:28:39
总时间限制: 1000ms 内存限制: 65536kB 描述 老王喜欢喝冰阔落。 初始时刻,桌面上有n杯阔落,编号为1到n。老王总想把其中一杯阔落倒到另一杯中,这样他一次性就能喝很多很多阔落,假设杯子的容量是足够大的。 有m 次操作,每次操作包含两个整数x与y。 若原始编号为x 的阔落与原始编号为y的阔落已经在同一杯,请输出"Yes";否则,我们将原始编号为y 所在杯子的所有阔落,倒往原始编号为x 所在的杯子,并输出"No"。 最后,老王想知道哪些杯子有冰阔落。 输入 有多组测试数据,少于 5 组。 每组测试数据,第一行两个整数 n, m (n, m<=50000)。接下来 m 行,每行两个整数 x, y (1<=x, y<=n)。 输出 每组测试数据,前 m 行输出 "Yes" 或者 "No"。 第 m+1 行输出一个整数,表示有阔落的杯子数量。 第 m+2 行有若干个整数,从小到大输出这些杯子的编号。 样例输入 3 2 1 2 2 1 4 2 1 2 4 3 样例输出 No Yes 2 1 3 No No 2 1 4 #include <bits/stdc++.h> using namespace std; string str; int a[50000+5],cnt; int root(int x) { if(a[x]==x) return x; return root(a

【模拟】杯子

十年热恋 提交于 2019-11-26 12:14:31
杯子 题目大意: 有n个1,现在可以将两个相同的数加在一起,使数字个数-1,现在要将数字个数控制在k以下(包括k),但可能要多加几个1,现在问你最少加多少个1 输入样例#1 3 1 输出样例#1 1 输入样例#2 13 2 输出样例#2 3 输入样例#3 1000000 5 输出样例#3 15808 数据范围 对于50%的数据,N≤10000000; 对于100%的数据,N≤1000000000,K≤1000。 解题思路: 先把n转换成二进制,然后看看不加1时,可以合成成那几个数,然后判断数字个数是否小于k,如果不是,那就把最小的数加到第二大的数,然后合成,以此类推 代码: # include <cstdio> using namespace std ; typedef long long ll ; ll n , k , l , d , num , sum , ans , a [ 100 ] ; int main ( ) { scanf ( "%lld %lld" , & n , & k ) ; l = 1 ; while ( n ) { if ( n & l ) n - = l , a [ ++ num ] = l ; //取出每个位上的1 l <<= 1 ; } d = a [ 1 ] ; //最小位 sum = 2 ; //次小位 while ( num > k + sum