现代软件开发中,一名专业的软件测试员在其中担任着重要的角色。
在你的小组开发的小程序中,有一个大小为 N(1 \leq N \leq 100) 的数组 a[0], a[1], \ldots, a[N-1] 作为输入,其中每个元素的值为 0 或 1。该程序通过一系列 if / else if / else if / ... / else
条件判断返回一个结果。每个条件判断最多检查一个输入变量,并根据其值返回 0 或 1。
例如,以下是一个简单的判断示例:
if (a[1] == 1) return 1;
else if (a[0] == 0) return 0;
else return 1;
在这个示例中,如果输入为 "01"(即 a[0]=0 和 a[1]=1),则输出将是 1。
假设你有 K(1 \leq K \leq 100) 个输入及其对应的输出结果。你的任务是测试这些输出是否有可能存在符合上述条件判断程序。如果不可能存在任何程序使得所有输出均与所给输入匹配,则认为程序存在Bug。
目前存在 T(1 \le T \le 10) 个待测试的程序,请逐一判断每个程序是否存在Bug 。
输入的第一行包含 T,为待测试程序的数量。
对于每个程序包含一组测试数据,第一行包含整数 N 和 K。
接下来 K 行,每行包含一个由 N 个 0 或 1 组成的字符串,表示一个输入(即 a[0] \cdots a[N−1] 的值),以及另一个字符(0 或 1)表示程序返回的结果。相邻的两组程序之间用空行分隔。
对于每一个待测试的程序,分别输出一行,如果不存在Bug,则输出 Bug-Free
,否则输出 Bug
。
4 1 3 0 0 0 0 1 1 2 4 00 0 01 1 10 1 11 1 1 2 0 1 0 0 2 4 00 0 01 1 10 1 11 0
Bug-Free Bug-Free Bug Bug
10 2 2 01 0 10 0 2 3 11 0 00 1 01 0 2 4 11 0 01 0 10 0 00 0 2 4 10 1 11 1 01 0 00 0 2 4 11 1 10 0 01 1 00 0 2 4 11 1 10 0 01 1 00 0 2 4 10 1 11 0 01 1 00 0 2 4 10 1 00 0 01 1 11 0 2 4 01 1 00 0 10 1 11 0 2 4 10 1 00 0 01 1 11 0
Bug-Free Bug-Free Bug-Free Bug-Free Bug-Free Bug-Free Bug Bug Bug Bug
以下是第一组程序符合所有用例的一个程序:
if (a[0] == 0) return 0;
else return 1;
以下是第一组程序符合所有用例的另一个程序:
if (a[0] == 1) return 1;
else return 0;
以下是第二组程序符合所有用例的一个程序:
if (a[1] == 1) return 1;
else if (a[0] == 0) return 0;
else return 1;
对于第三组程序不存在符合所有用例的一个程序。
对于第四组程序不存在符合所有用例的一个程序。
本题共 10 个测试点。