文章目录[隐藏]
某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?易语言采用穷举算法解决邮票组合.
将问题进行数学分析,不同张数和面值的邮票组成的邮资可用下列公式计算:
S=3*i+5*j
其中i为3分邮柰的张数,j为5分的张数
按题目的要求,3分的邮票可以取0、1、2、3、4张,5分的邮票可以取0、1、2、3张。
采用穷举方法进行组合,可以求出这些不同面值不同张数的邮标组合后的邮资。
算法实现
界面放两个编辑框,一个显示邮票种类个数,一个显示邮资种类。
.版本 2 .子程序 _计算图形按钮_被单击 .局部变量 循环变量1, 整数型, , , 既作为循环变量,又作为取面值为3的邮票的张数 .局部变量 循环变量2, 整数型, , , 既作为循环变量,又作为取面值为5的邮票的张数 .局部变量 循环变量3, 整数型 .局部变量 种类数组, 整数型, , "0", 存放找到的邮票组合 .局部变量 邮票组合面值, 整数型, , , 存放找到的一个邮票组合的面值 .局部变量 标志变量, 逻辑型, , , 标识找到的邮票组合是否已存在 .局部变量 邮票组合个数, 整数型, , , 统计邮票组合的个数 ' 邮资种类数编辑框 = “” ' 邮资种类编辑框 = “” 邮票组合个数 = 0 .变量循环首 (1, 5, 1, 循环变量1) ' 取3分邮票的张数 .变量循环首 (1, 4, 1, 循环变量2) ' 取5分邮票的张数 邮票组合面值 = (循环变量1 - 1) × 3 + (循环变量2 - 1) × 5 ' 计算组成的邮票面值 标志变量 = 假 .变量循环首 (1, 取数组成员数 (种类数组), 1, 循环变量3) ' 查找是否有相同的邮资 .如果真 (邮票组合面值 = 种类数组 [循环变量3]) 标志变量 = 真 跳出循环 () .如果真结束 .变量循环尾 () .如果真 (标志变量 = 假 且 邮票组合面值 ≠ 0) ' 没有找到相同的邮资则满足要求存入数组 加入成员 (种类数组, 邮票组合面值) 邮资种类编辑框.加入文本 (到文本 (邮票组合面值), #换行符) ' 显示结果 邮票组合个数 = 邮票组合个数 + 1 ' 邮资种类个数 .如果真结束 .变量循环尾 () .变量循环尾 () 邮资种类数编辑框.内容 = 到文本 (邮票组合个数) ' 输出邮资种类个数