文章目录[隐藏]
易语言采用筛选法猫捉老鼠。所谓筛选法就是从全集中将不合格的项全部删去,剩下的就是答案。
30个只老鼠围成一圈,花猫从第一只开始数,数到5或5的倍数就吃掉,问最有后一个吃掉的应该是站在地几个位置上的老鼠?
这是个经典问题,解法就是模拟整个过程,有点类似于循环队列。
另外,为了程序上处理方便,可以假定所有老鼠都被吃掉,然后看一下最后一个被吃掉的是谁。另一处为了处理方便而采取的措施是pos的初始值设为-1.很多时候,对问题的问法稍作变动,或者将初始值、加减变量的位置稍作调整,用程序处理起来会方便很多。
易语言源码
窗口组件,一个编辑框输入老鼠数量,一个输入开始位置,一个列表框显示结果,一个开始按钮。
.版本 2 .子程序 _计算图形按钮_被单击 .局部变量 数组, 逻辑型, , "0" .局部变量 变量1, 整数型 .局部变量 老鼠数量, 整数型 .局部变量 老鼠剩余数量, 整数型 .局部变量 变量3, 整数型 .局部变量 变量4, 整数型 .局部变量 变量5, 整数型 .局部变量 次数变量, 整数型 老鼠数量 = 到数值 (老鼠数量编辑框.内容) .如果真 (老鼠数量 ≤ 0 或 到数值 (数编辑框.内容) ≤ 0) 信息框 (“数量或数不能小于1!”, #错误图标, “出现错误了!”) 返回 () .如果真结束 ' 初始化变量 重定义数组 (数组, 假, 到数值 (老鼠数量)) ' 把老鼠数量给老鼠剩余数量 老鼠剩余数量 = 老鼠数量 显示列表框.清空 () .判断循环首 (老鼠剩余数量 > 0) 变量3 = 1 .判断循环首 (变量3 < 到数值 (数编辑框.内容) + 1) 变量4 = 变量4 + 1 .如果真 (变量4 = 老鼠数量 + 1) 变量4 = 1 .如果真结束 ' 老鼠还未被吃掉 .如果真 (数组 [变量4] = 假) 变量3 = 变量3 + 1 .如果真结束 .判断循环尾 () 数组 [变量4] = 真 ' 剩余老鼠数减一 老鼠剩余数量 = 老鼠剩余数量 - 1 次数变量 = 次数变量 + 1 显示列表框.加入项目 (“第” + 到文本 (次数变量) + “次吃掉的位置:” + 到文本 (变量4), ) .判断循环尾 () 显示列表框.现行选中项 = 显示列表框.取项目数 () - 1 标签1.标题 = “最后吃掉的位置是:” + 到文本 (变量4)