实例:找零钱最佳组合

题目:假设商店货品价格(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,在此为了展示所有情况,所以列出了所有可能的操作。