实例:找零钱最佳组合
题目:假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客的最少货币个(张)数?(货币面值50元,10元,5元,1元四种)
题目分析:设四种货币的张数分别为n50、n10、n5、n1(均为整数)它们的值即为结果。
1)输入情况有R>100, 0<R<=100, 0<R, P>100, R<=P<=100, P<R。
2)输出情况有n50=1||0, 0<= n10 <5, n5=1||0, 0<= n1 <5。
3)测试实例(R,P)有
编号 | R | P | 预期输出结果 |
1 | 101 | 102 | 非法输入 |
2 | 101 | 101 | 非法输入 |
3 | 101 | 100 | 非法输入 |
4 | 101 | 99 | 非法输入 |
5 | 100 | 101 | 非法输入 |
6 | 100 | 100 | n50=0,n10=0,n5=0,n1=0 |
7 | 100 | 99 | 非法输入 |
8 | 50 | 101 | 非法输入 |
9 | 50 | 100 | n50=1,n10=0,n5=0,n1=0 |
10 | 50 | 99 | n50=0,n10=4,n5=1,n1=4 |
11 | 50 | 75 | n50=0,n10=2,n5=1,n1=0 |
12 | 50 | 51 | n50=0,n10=0,n5=0,n1=1 |
13 | 50 | 50 | n50=0,n10=0,n5=0,n1=0 |
14 | 50 | 49 | 非法输入 |
15 | 0 | 101 | 非法输入 |
16 | 0 | 100 | 非法输入 |
17 | 0 | 50 | 非法输入 |
18 | 0 | 0 | 非法输入 |
19 | 0 | -1 | 非法输入 |
20 | -1 | 101 | 非法输入 |
21 | -1 | 100 | 非法输入 |
22 | -1 | 50 | 非法输入 |
23 | -1 | -1 | 非法输入 |
24 | -1 | -2 | 非法输入 |
本例采用的是最坏情况测试,因为两个变量中P变量的边界是随着R变化而变化的,因此在测试中先确定R的取值,然后在此基础上对P的取值进行分析。由于采用最坏情况测试,出现了比较多的非法输入。其实这些非法输入可以根据R的值分成三个等价类非别是R>100, 0<R<=100, R<=0,在此为了展示所有情况,所以列出了所有可能的操作。