《易语言算法参考 .pdf》由会员分享,可在线阅读,更多相关《易语言算法参考 .pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、共 43 页第 1 页共 43 页第 1 页易语言经典算法1.取所有质数2.求最小公倍数3.求最大公约数4.汉诺塔5.9X9 乘法表6.猫捉老鼠(筛选法)7.水仙花数问题8.计算组合9.身份证升级 15位升级到 18位10.用冒泡法排序数字11.九宫计算12.奶牛问题13.求阶乘14.折半查找15.给歌手打分16.航线设置17.数字全排列18.借书方案19.求直角三角形20.二分排序21.抢 3022.求回文数23.斐波那契数列(递推法)24.分块查找25.求帕斯卡三角(杨辉三角)26.箱子问题(贪婪法)27.寻找文件(递归法)28.求最大公约数(递归法)29.取不重复数(排除法)30.拉丁方
2、31.波松瓦分酒32.皇后问题33.背包问题34.角谷猜想35.邮票组合36.贮油点37.分解质因数38.任意进制转换(大数)39.计算星期几(常用公式)40.计算星期几(蔡勒公式)41.猴子吃桃子42.马踏棋盘名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 43 页 -共 43 页第 2 页共 43 页第 2 页43.打鱼还是晒网44.九位累进可除数45.十进制转为二进制46.九连环47.找窃贼48.哥德巴赫猜想49.最小生成数50.农夫过河51.旅游最省钱路径52.马克思手稿中的数学题53.上楼梯(递归).e54.上楼梯(非递归)55.金额大小写转换56.求一元二次方程的根(
3、二分法)57.数字与 IP 地址间的转换58.八皇后问题(回溯法)59.求 N 阶幻方60.计算分数的精确值61.找零钱62.求一元二次方程的根(公式法)63.比赛日程(分治法)64.两个有序数组的合并65.统计投色子(2 个)的结果66.12 小球问题67.改进冒泡排序法68.螺旋数组69.射击环数70.猜数字游戏71.桶排序72.造币厂问题73.直接插入排序74.搬砖75.公车座位巧安排76.韩信点兵(中国剩余定理)77.黑洞数78.矩阵相乘79.螺旋矩阵问题(多循环法)80.买水果问题81.求平方根82.求任意三角形面积83.全排列问题(递推法)84.怎样组合值最大85.取两数之间均匀分
4、布的随机数名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 43 页 -共 43 页第 3 页共 43 页第 3 页算法:递归递推法分块查找筛选法枚举法冒泡法二分法名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 43 页 -共 43 页第 4 页共 43 页第 4 页序号:001 使用算法:筛选法问题:取 N 以内的所有质数数量并显示,问题描述:求 N(N0)个自然数中的所有质数数量,并显示问题分析:先把所有质数以外的数,打上“1“的标志,最后搜索整型数组,找出值为0的个数,就是质数的个数!备注:易语言例程:001.取所有质数.e序号:002 使用算法:循环检验问题:
5、求最小公倍数问题描述:求任意个自然数的最小公倍数问题分析:我们只要认准一个数,先从自身开始和另一个数求余数比较,为0 那么这个数就是最小公倍数,如果不为0,那么把这个数不断翻倍再比较。备注:易语言例程:002.求最小公倍数.e 序号:003 使用算法:辗转相除法问题:求最大公约数问题描述:求任意个自然数的最大公约数问题分析:用辗转相除法求最大公约数用辗转相除法求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数去除前一个余数,直到余数是0 为止。那么,最后一个除数就是所求
6、的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。例如求 1515和 600 的最大公约数,第一次:用 600除 1515,商 2 余 315;第二次:用 315除 600,商 1 余 285;第三次:用 285除 315,商 1 余 30;第四次:用 30除 285,商 9 余 15;第五次:用 15除 30,商 2 余 0。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 43 页 -共 43 页第 5 页共 43 页第 5 页1515 和 600 的最大公约数是 15。辗转相除法是求两个数的最大公约数的方法。如果求几个数的最大公约数,可以先求两个数的最大公约数,再
7、求这个最大公约数与第三个数的最大公约数。这样依次下去,直到最后一个数为止。最后所得的一个最大公约数,就是所求的几个数的最大公约数。备注:易语言例程:003.求最大公约数.e 序号:004 使用算法:未知问题:汉诺塔问题描述:汉诺塔是一种古老的游戏,是指在一柱(设为“甲”柱)上从下向上依次放着从大到小的一叠盘子,要把该柱(“甲”柱)上的盘子全部搬到指定的柱上(设为“乙”柱),在搬运过程中,可以利用另外一根柱子(设为“丙”柱)来协助搬移,要求在搬移过程中必须始终(即每搬一步后)保持每根柱上(“甲”、“乙”、“丙”柱)的盘子都是处于从大到小(从柱子下面至上面)依次排列的状态,试问怎样搬移盘子?最少需
8、要搬几次才能把“甲”柱上的全部盘子移至“乙”柱?古印度梵教曾利用这种方法来推算宇宙末日之时间。问题分析:在移动的过程中,必须按照下述移动规则:1.直径较小的圆盘永远置于直径较大的圆盘上。2.圆盘可任意地由任何一个木椿移到其他的木椿上。3.每一次仅能移动一个圆盘。用递归调用的方法求解。备注:易语言例程:004.汉诺塔.e 序号:005 使用算法:未知问题:9X9 乘法表问题描述:列出 99乘法表问题分析:被乘数和乘数都是从1-9 依次递增 1,到 9 后继续返回 1 重新递增!备注:易语言例程:005.99乘法表.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 43 页 -共
9、43 页第 6 页共 43 页第 6 页序号:006 使用算法:筛选法问题:猫捉老鼠(筛选法)问题描述:所谓筛选法就是从全集中将不合格的项全部删去,剩下的就是答案。30 个只老鼠围成一圈,花猫从第一只开始数,数到 5 或 5 的倍数就吃掉,问最有后一个吃掉的应该是站在地几个位置上的老鼠?这是个经典问题,解法就是模拟整个过程,有点类似于循环队列。另外,为了程序上处理方便,可以假定所有老鼠都被吃掉,然后看一下最后一个被吃掉的是谁。另一处为了处理方便而采取的措施是pos 的初始值设为-1.很多时候,对问题的问法稍作变动,或者将初始值、加减变量的位置稍作调整,用程序处理起来会方便很多。备注:例程:00
10、6.猫捉老鼠(筛选法).e 序号:007 使用算法:枚举法问题:水仙花数问题问题描述:在 100-999这些三位数中,有些数本身等于它百位上数字的立方加上十位上数字的立方加上个位上数字的立方,这样的三位数叫水仙花数。那么现在我们就要来找出这些三位数。问题分析:“根据水仙花数的特点:我们只要将这些三位数按照下面的规律逐个比较就可以了。比如:的立方的立方的立方,那么这个数就是水仙花数。”备注:易语言例程:007.水仙花数问题.e 序号:008 使用算法:递归问题:计算组合问题描述:找出从自然数 1,2,.n中任取 r 个数的组合。例如n=5,r=3 问题分析:分析所列的10 个组合,可用这样的递归
11、思想来考虑慈和函数的算法,设子程序计算分组子程序(m,k)即找出自然数 1,2。m 中任取 k 个数的所有组合。当组合的第一个数字选定时,其后面的数字是从余下的m-1 个数中取 k-1 个数的所有组合。这就将求 m个数中去 r个数的组合问题转化成求m-1个数中取 k-1 数的组合。备注:易语言例程:008.m 选 n(生成法).e 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 43 页 -共 43 页第 7 页共 43 页第 7 页序号:009 使用算法:固定算法问题:身份证升级 15 位升级到 18 位问题描述:将个人旧身份证 15 位升级到 18 位问题分析:公式:(aiW
12、i)(mod 11),公式中:i-表示号码字符从由至左包括校验码在内的位置序号;ai-表示第 i 位置上的号码字符值;Wi-示第 i 位置上的加权因子,其数值依据公式Wi=2(n-1)(mod 11)计算得出。i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ai Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1 易语言例程:009.身份证升级 15
13、 位升级到 18位.e 序号:010 使用算法:冒泡法问题:用冒泡法排序数字问题描述:使用冒泡排序法按顺序排序一批数字问题分析:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则交换两记录的值。然后比较第二个和第三个记录的关键字,依次类推,直至最后一个记录也进行过比较。上述过程称为第一趟冒泡排序,其结果是最大值被安置到最后一个记录的位置上。进行第二趟排序,对前N-1 个记录进行同样的排序。依次类推,当进行完N-1 趟排序后,所有记录有序排列。备注:易语言例程:010.冒泡排序.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 43 页 -共 43 页第 8 页共
14、 43 页第 8 页序号:011 使用算法:推导法问题:九宫计算问题描述:1 到 9 九个数字任意组合成一个三行三列的九宫。使每行没列没一斜行的和都相同计算出有多少种结果。问题分析:用两层循环试探所有可能的组合如果合格则显示不合格则淘汰备注:易语言例程:011.九宫计算.e 序号:012 使用算法:推导法问题:奶牛问题问题描述:一个农场有头母牛,现在母牛才一岁,要到四岁才能生小牛,四岁之后,每年生一头小牛。假设每次生的都是母牛,并且也遵守4 年才生育并生母牛的原则。问 n 年之后多少头牛?问题分析:因为初试奶牛已经1 岁,可以将规律计算为:年数:1 2 3 4 5 6 7 8 9 10 奶牛年
15、龄 2 3 4 5 6 7 8 9 10 11 牛:1 1 2 3 4 5 7 9 11 13 通过上面规律可以推导出结果。备注:易语言例程:012.奶牛问题.e 序号:013 使用算法:问题:求阶乘问题描述:输入一个整数,求出其阶乘。问题分析:0 的阶乘等于 1,1 的阶乘等于 1 N 的阶乘等于 N 乘以(N-1)的阶乘由此可以断定 N 的阶乘是 1*2*3*4.(n-1)*n 备注:易语言例程:013.阶乘计算.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 43 页 -共 43 页第 9 页共 43 页第 9 页序号:014 使用算法:二分法问题:折半查找问题描述:1
16、0个篮子里分别放着 10种好吃的(无重复)水果是按编号大小顺序放在110号篮子。怎样快速找到水果?问题分析:折半查找的基本思想:设查找元素储存在一个一维数组中,已经按关键字递增(或递减)的方式排列的情况下,可进行折半查找。其方法是:首先将要查的关键字值与数组中间位置上的记录的关键字比较.”1 若相等,则查找成功;2 若大于中间位置的关键字则说明要查记录只可能在后半段中,下一步应在后半部分再进行折半查找;3 若小于中间位置关键字说明要查记录只可能在前半部分,下一步应该在前半部分再进行折半查找。逐步缩小范围直到查找成功或子表为空时失败为止。备注:易语言例程:014.折半查找.e 序号:015 使用
17、算法:求最大值,求最小值,求平均数问题:给歌手打分问题描述:在歌星大奖赛中,有10 个评委为参赛的选手打分,分数为1100 分。选手最后得分为:去掉一个最高分和一个最低分后其余8 个分数的平均值。求了其中一个选手的最后得分。问题分析:要求出歌手的得分,首先将个评委的分数相加在一起,接着找出个评委中的最高分和最低分,将前面求出的和减去这个最高分和最低分,得出的结果再除以,最后的结果为歌手的得分。备注:这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。易语言例程:015.给歌手打分.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 43 页 -共 43
18、页第 10 页共 43 页第 10 页序号:016 使用算法:求最大不下降序列问题:航线设置问题描述:美丽的莱茵河畔,每边都分布着 N 个城市,两边的城市都是唯一对应的友好城市,现需要在友好城市开通航线以加强往来.但因为莱茵河常年大雾,如果开设的航线发生交叉现象就有可能出现碰船的现象.现在要求近可能多地开通航线并且使航线不能相交!问题分析:用一个数组来存放对应的友好城市的代码和友好城市的对数,然后在规划时先从倒数第二个城市开始,找出可以设置的航线条数和下一条航线开始的城市,如果正在规划的城市的航线数大于已知的航线条数,则存储这个航线条数和城市的代码,这样一直找下去,把最多的航线数都找出来,最后
19、把最多的航线数和对应的友好城市显示出来。备注:易语言例程:016.航线设置.e 序号:017 使用算法:回溯法问题:数字全排列问题描述:任意给出从 1到 N 的 N 个连续的自然数,求出这 N 个自然数的各种全排列。如 N=3 时,共有以下 6 种排列方式:123,132,213,231,312,321。问题分析:数字不能重复,N 由键盘输入(N b-c-a x y 倒酒的规则如下:1)按 a-b-c-a的顺序;2)b 倒空后才能从 a中取3)c 装满后才能向 a 中倒备注:易语言例程:031.拉丁方.e 序号:032 使用算法:递归法问题:皇后问题问题描述:国际象棋中皇后可以攻击所在行,列,
20、斜线上的每一个位置,按照此规则要在一个 n*n 的棋盘上放 n 个皇后使每一个皇后都不互相攻击。问题分析:(1)引入 1 个数组模拟棋盘上皇后的位置皇后位置数组 j=4,表示第 j 列,第皇后位置数组 j 行有皇后引入 3 个工作数组行数组 k=1,表示第 k 行没有皇后右高左低数组 k=1,表示第 k 条右高左低的斜线上没有皇后左高右低数组 k=1,表示第 k 条左高右低的斜线上没有皇后观察棋盘找到规律同一右高左低的斜线上的方格,它们的行号和列号之和相等;同一左高右低的斜线上的方格,它们的行号和列号只差相等;开始时,所有行和斜线上都没有皇后,从第一列的第一行配置第一个皇后开始,在第m 列的皇
21、后位置数组 m行放置了一个合理的皇后之后,准备考察第m+1 列时,在数组行数组,右高左低数组,左高右低数组 中为第 m 列,皇后位置数组 m的位置设定有皇后标志如果按此放置位置得不到结果,则把当前列中有皇后标记改为无皇后标记。依次类推当在棋盘最后一列上也找到合适的位置后得到结果。通过上面规律可以推导出结果。备注:易语言例程:032.皇后问题.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 43 页 -共 43 页第 17 页共 43 页第 17 页序号:033 使用算法:递归法问题:背包问题问题描述:随机出现十种物品,每个重量100千克以内。设定一个背包的载重上限,计算出一
22、种装物品的方法使物品重量正好等于背包载重上限。问题分析:对每个物品考虑选择放入和不放入背包两种情况首先,考查物品被放入的情况,这种可能性当且仅当包含它不会超出背包上限时才是可行的。继续考查下一个物品。其次,还要考查物品不被放入背包的情况,这种可能性当且仅当不包含物品其它物品也能找到合理的组合。考查完物品后,继续考查下一个物品依次类推,最终找到一个合理组合或没有合理组合备注:易语言例程:033.背包问题.e 序号:034 使用算法:循环判断问题:角谷猜想问题描述:日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,
23、若为奇数则乘 3 加 1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。问题分析:判断给定的一个自然数,若为偶数除以2,若为奇数则乘3 加 1,得到一个新的自然数后按照上面的法则继续演算,一直到结果变为,并且将每一步的运算过程和得到的新的自然数显示出来。通过上面规律可以推导出结果。备注:易语言例程:034.角谷猜想.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 43 页 -共 43 页第 18 页共 43 页第 18 页序号:035 使用算法:穷举法问题:邮票组合问题描述:某人有四张 3分的邮票和三张5 分的邮票,用这些邮票中的一张或若干张可以得
24、到多少种不同的邮资?问题分析:将问题进行数学分析,不同张数和面值的邮票组成的邮资可用下列公式计算:S=3*i+5*j 其中 i 为 3 分邮柰的张数,j 为 5 分的张数按题目的要求,3 分的邮票可以取 0、1、2、3、4 张,5 分的邮票可以取 0、1、2、3 张。采用穷举方法进行组合,可以求出这些不同面值不同张数的邮标组合后的邮资。备注:易语言例程:035.邮票组合.e 序号:036 使用算法:递推法问题:贮油点问题描述:一辆重型卡车欲穿过1000 公里的沙漠,卡车耗油为1 升/公里,卡车总载油能力为 500 公升。显然卡车一次是过不了沙漠的。因此司机必须设法在沿途建立几个储油点,使卡车能
25、顺利穿越沙漠,试问司机如何建立这些储油点?每一储油点应存多少油,才能使卡车以消耗最少油的代价通过沙漠?问题分析:编程计算及打印建立的贮油点序号,各贮油点距沙漠边沿出发的距离以及存油量。No.Distance(k.m.)oil(litre)1 X X X X 2 X X X X 3 X X X X 设 disi 为第 i 个贮油点至终点(i=0)的距离;oili 为第 i 个贮油点的存贮油量;我们可以用倒推法来解决这个问题。从终点向始点倒推,逐一求出每个贮油点的位置及存油量。从贮油点 i 向贮油点 i+1 倒推的策略是,卡车在点i 和点 i+1 间往返若干次。卡车每次返回 i+1 处时正好耗尽
26、500 公升汽油,而每次从 i+1 出发时又必须装足500公升汽油。两点之间的距离必须满足在耗油最少的条件下使 i 点贮足 i*500 分升汽油的要求(0=i=n 1)。具体地讲,第一个贮油点i=1 应距终点 i=0 处 500km 且在该处贮藏 500公升汽油,这样才能保证卡车能由i=1 处到达终点 i=0 处这就是说 dis1=500 oil1=500;名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 43 页 -共 43 页第 19 页共 43 页第 19 页为了在 i=1 处贮藏 500公升汽油,卡车至少从 i=2 处开两趟满载油的车至i=1处。所以 i=2 处至少贮有
27、2*500 公升汽油,即 oil 2=500*2=1000。另外,再加上从 i=1 返回至 i=2 处的一趟空载,合计往返3次。三次往返路程的耗油量按最省要求只能为500 公升。即 d12=500/3km dis2=dis1+d12=dis1+500/3 依此类推,为了在i=k 处贮藏 k*500 公升汽油,卡车至少从i=k+1 处开 k 趟满载车至 i=k 处,即oilk+1=k+1*500=oilk+500,加上从 i=k 处返回 i=k+1 的 k-1 趟返程空间,合计 2k-1 次。这 2k-1 次总耗油量按最省要求为500 公升,即 dk,k+1=500/(2k-1)disk+1=d
28、isk+dk,k+1=disk+500/(2k-1);通过上面规律可以推导出结果。备注:易语言例程:036.贮油点.e 序号:037 使用算法:循环判断问题:分解质因数问题描述:将一个正整数分解质因数问题分析:问题分析:对 n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果 nk,但 n 能被 k 整除,则应打印出k 的值,并用 n 除以 k 的商,作为新的正整数你n,重复执行第一步。(3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步,循环求解。备注:易语言例程:037
29、.分解质因数.e 序号:038 使用算法:进制算法、文本分析问题:任意进制转换(大数)问题描述:将任意的一个正整数进行-进制之间的转换问题分析:利用易语言大数支持库,用文本分析的方法进行转换,注意不能用基本数据类型,不然数值过大就会溢出备注:易语言例程:038.任意进制转换(大数).e 名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 43 页 -共 43 页第 20 页共 43 页第 20 页序号:039 使用算法:常用公式问题:计算星期几问题描述:计算任何一天是星期几问题分析:最常见的公式:W=Y-1+(Y-1)/4-(Y-1)/100+(Y-1)/400+D Y 是年份数,
30、D 是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。备注:易语言例程:039.计算星期几(常用公式).e 序号:040 使用算法:蔡勒公式问题:计算星期几问题描述:计算任何一天是星期几问题分析:蔡勒(Zeller)公式w=y+y/4+c/4-2c+26(m+1)/10+d-1 公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于 3,小于等于 14,即在蔡勒公式中,某年的 1、2 月要看作上一年的13、14 月来计算,比如 2003年 1 月 1 日要看作 2002年的 13月 1 日来计算);d:日;代表取整,即只要整数部分。备注:易语言例程:04
31、0.计算星期几(蔡勒公式).e 序号:041 使用算法:倒推法问题:猴子吃桃子问题描述:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。问题分析:采取逆向思维的方法,从后往前推断。备注:易语言例程:041.猴子吃桃子.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 43 页 -共 43 页第 21 页共 43 页第 21 页序号:042 使用算法:贪心法问题:马踏棋盘问题描述:在 8 8 的国际象棋棋盘上,从
32、任意指定的方格出发,为马寻找一条走遍棋盘每一格并且只经过依次的一条路径,如果找到请显示出来。问题分析:熟悉国际象棋的人都知道,马在某个方格,可以在一步内到达的不同位置最多有 8 个。如图所示:#4#3#5#0#2 6#1#7#8#(1)对马走的方法可以设定一个顺序,如当前位置在棋盘的(i,j)方格,下一个可能的位置依次为:(i+2,j+1),(i+1,j+2),(i-1,j+2),(i-2,j+1),(i-2,j-1),(i-1,j-2),(i+1,j-2),(i+2,j-1),实 际 可 以走的位置很明显仅仅限于还未走过的和不越出边界的那些位置。(2)这里我们定义马在一步内实际可以走的位置数
33、为马在当前位置的出口数,此外,为便于程序的统一处理,这里引入两个数组“行变化数组”和“列变化数组”,分别储存 8 种可能走法对马当前所在位置的横纵坐标的增量。(3)本题用贪心法策略求解。当马处于某一位置时,其选择下一位置的准则为:从马当前位置所允许走的位置中,选择出口数最少的哪个位置。如马的当前位置只有3 个出口,它们的出口数分别为 4,2,3,则程序就选择出口数为2 的那个出口。算法简单描述 马从棋盘第一行第一列位置开始出发;预设着法选择顺序控制变量“方法编号”为1;循环判断首()模拟棋盘数组初始化为0;行号=起始行号;列号=起始列号;计次循环首(63,当前遍历步数)如果(马当前位置没有出口
34、)返回(-1)否则 行号按返回方法改变;列号按返回方法改变。在棋盘相对位置记录为第几步骤;如果(找到解)输出模拟棋盘数组;终止循环;否则 方法编号=方法编号+1;循环判断尾(没有找到解)上述算法在整个找解的过程一直向前,所以能非常快地找到解。但是对于某些开名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 43 页 -共 43 页第 22 页共 43 页第 22 页始位置,实际上有解可程序第一次找不到解,则程序只要变换 8 中可能出口的顺序,就能找到解。考虑到这种变换8 种方法的情况,程序引用“方法编号“用于控制 8 种可能走法的顺序。开始为1 时不能找到解,就让 方法编号 加 1
35、,重新找解。备注:易语言例程:042.马踏棋盘.e 序号:043 使用算法:求余数问题:打鱼还是晒网问题描述:中国有句俗语叫“三天打鱼两天晒网”。某人从 1990年 1 月 1 日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。问题分析:根据题意可以将解题过程分为三步:1)计算从 1990 年 1 月 1 日开始至指定日期共有多少天;2)由于“打鱼”和“晒网”的周期为5 天,所以将计算出的天数用5 去除;3)根据余数判断他是在“打鱼”还是在“晒网”;若余数为 1,2,3,则他是在“打鱼”否则是在“晒网”在这三步中,关键是第一步。求从1990 年 1 月 1 日至指定
36、日期有多少天,要判断经历年份中是否有闰年,二月为 29天,平年为 28 天。闰年的方法可以用伪语句描述如下:如果(年能被 4 除尽 且 不能被 100 除尽)或 能被 400 除尽)则该年是闰年;否则不是闰年。易语言中判断能否整除可以使用求余运算(即求模)备注:易语言例程:043.打鱼还是晒网.e 序号:044 使用算法:回朔法问题:九位累进可除数问题描述:求九位累进可除数。所谓九位累进可除数就是这样一个数:这个数用到1 到9 这九个数字组成,每个数字刚好只出现一次。这九个位数的前两位能被2 整除,前三位能被 3 整除.前 N 位能被 N 整除,整个九位数能被9 整除。问题分析:问题本身可以简
37、化为一个穷举问题:只要穷举每位数字的各种可能取值,按照题目的要求对穷举的结果进行判断就一定可以得到正确的结果。问题中给出了“累进可除”这一条件,就使得我们可以在穷举法中加入条件判断。在穷举的过程中,当确定部分位的值后,马上就判断产生的该部分是否符名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 43 页 -共 43 页第 23 页共 43 页第 23 页合“累进可除”条件,若符合,则继续穷举下一位数字;否则刚刚产生的那一位数字就是错误的。这样将条件判断引入到穷举法之中,可以尽可能早的发现矛盾,尽早地放弃不必要穷举的值,从而提高程序的执行效率。为了达到早期发现矛盾的目的,不能采用多
38、重循环的方法实行穷举,那样编出的程序质量较差。程序中使用的算法不再是穷举法,而是回朔法。备注:易语言例程:044.九位累进可除数.e序号:045 使用算法:问题:十进制转为二进制问题描述:十进制转为二进制并显示问题分析:将十进制数转换成二进制数,一般采用除二取余法。如果用一个数组b 来存入二进制数,可以依次把所得的余数存入b0,b1,,bn,最后按 bn,bn-1,,b1,b0的顺序输出这些余数,就得到了相应的二进制数。备注:易语言例程:045.十进制转为二进制.e 序号:046 使用算法:递归法问题:九连环问题描述:九连环游戏是中国人自己发明的,它的历史非常悠久,据说是起源于战国时期。九连环
39、主要是由一个框架和九个圆环组成:每个圆环上连有一个直杆,而这个直杆则在后面一个圆环内穿过,九个直杆的另一端用一块木板或圆环相对固定。计算九连环游戏中取下某一个环需要几步问题分析:正确的拆解是先以第9 环为目标,先拆下它,简化为拆一个8 连环。接着再也第 8 环为目标,拆下它,简化为拆一个7 连环。以此类推,直至全部拆解。深刻的理解了上面所说的规律后,就会发现,安装上第9 环后,问题可以被简化为装一个7 连环,而当装上第7 环后,问题就被简化为装一个5 连环了.,最后找出九连环跟递归一定有联系。那么整个游戏所需步数=取下第 1 个环所需步数+.+取下第 9 个环所需步数。我们就用递归来实现这个问
40、题。备注:易语言例程:046.九连环.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 43 页 -共 43 页第 24 页共 43 页第 24 页序号:047 使用算法:推导的公式问题:找窃贼问题描述:公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说:“乙没有偷,是丁偷的。”乙说:“我没有偷,是丙便的。”丙说:“甲没有偷,是乙偷的。”丁说:“我没有偷。”请根据这四人的答话判断谁是盗窃者。问题分析:假设 A、B、C、D 分别代表四个人,变量的值为1 代表该人是窃贱。由题目已知:四人中仅有一
41、名是窃贱,且这四个人中的每个人要么说真话,要么说假话,而由于甲、乙、丙三人都说了两句话:“X 没偷,X 偷了”,故不论该人是否说谎,他提到的两人中必有一人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式:甲说:”乙没有偷,是丁偷的。”B+D=1 乙说:“我没有偷,是丙偷有。”B+C=1 丙说:“甲没有偷,是乙偷的。”A+B=1 丁说:“我没有偷。”A+B+C+D=1 其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贱的条件。根据上面所列出的公式可以编程找出窃贼。备注:易语言例程:047.找窃贼 e 序号:048 使用算法:问题:哥德巴赫猜想
42、问题描述:验证哥德巴赫猜想:两个素数之和表示偶数。问题分析:我们容易得出:4=2+2,63+3,85+3,10=7+3,12=7+5,14=11+3,这个问题是德国数学家哥德巴赫(CGoldbach,1690-1764)于 1742 年 6 月 7 日在给大数学家欧拉的信中提出的,所以被称作哥德巴赫猜想。同年6 月 30 日,欧拉在回信中认为这个猜想可能是真的,但他无法证明。备注:易语言例程:048.哥德巴赫猜想.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 43 页 -共 43 页第 25 页共 43 页第 25 页序号:049 使用算法:递推法问题:最小生成数问题描述
43、:按递增次序生成集合M 的最小的 n 个数。M 定义如下:(1)1M(2)若 xM,则 2x+1M,3x+1M(3)无别的数属于 M 问题分析:要生成数组 M 中的最小的 n 个数,首先 1 为这 n 个数中的第一个数,再由 1递推出余下的 n-1 个数。设 n 个数在数组 M 中,2x+1 与 3x+1 均做为一个队列,从两队列中选一排头(数值最小者)送入数组M 中,所谓“排头”就是队列中尚未选入M 的第一个小的数.用“下标变量 2”表示 2x+1 这一列的排头,用 下标变量 3表示 3x+1 这一列的排头。通过上面规律可以推导出结果。备注:表示属于易语言例程:049.最小生成数.e 序号:
44、050 使用算法:问题:农夫过河问题描述:农夫过河。一个农夫带着一只狼,一只羊和一些菜过河。河边只有一条一船,由 于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊 要吃菜,请问农夫如何才能使三样东西平安过河。只求出一种方案即可问题分析:只要分清楚狼羊菜三者之间的关系,可以通过判断目前状态,来确定下一步走法。备注:易语言例程:050.农夫过河.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 43 页 -共 43 页第 26 页共 43 页第 26 页序号:051 使用算法:分枝界定法问题:旅游最省钱路径问题描述:设有 n 个城市(或景点),今从某市出发遍
45、历各城市,使之旅费最少(即找出一条旅费最少的路径)。问题分析:设矩阵元素 aij 表示从第 i 号城市到第 j 号城市之旅费。并设城市间往返旅费可以不等(即 aij aji)。aii 是没有意义的,由于问题是求最少,因此aii 不应为零,今试为无穷()。各城市间旅费如下表:17 13 24 10 10 20 9 6 17 29 21 28 12 10 22 19 12 18 31 20 问题的算法是在表每行中找最小元素,并用该数减该行非元素。再对每列也施同样工作,形成一个新表(保证每行、每列均不少于个为零),所有减数累加为 min(其含义为旅费下界,即旅费不会少于min)。旅行路程因成环路,故
46、可设起点是第号城市。若选第 i 号到第 j 号城市,则表上 bij 表示还需旅费,同时由于选了 ij,则 i 不可能再选向其它城市,则第i 行全填,同理,由于j 已由 i 过来,则第 j 城市不可能再由其它城市过来,第j 列也全填上。对新矩阵再施每行至少有一个,每列至少有一个,找出余下城市遍历所需旅费下界mj。对于不同的 j,比较 mj+bij 以最小的一个为选定从i 到达的城市,并将选择路径记下。如此重复直到选完。备注:易语言例程:051.旅游最省钱路径.e 序号:052 使用算法:问题:马克思手稿中的数学题问题描述:马克思手稿中有一道趣味数学问题:有30 个人,其中有男人、女人和小孩,在一
47、家饭馆吃饭花了50 先令;每个男人花3 先令,每个女人花2 先令,每个小孩花 1 先令;问男人、女人和小孩各有几人?问题分析:设 x,y,z 分别代表男人、女人和小孩。按题目的要求,可得到下面的方程:x+y+z=30(1)3x+2y+z=50(2)用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得:2x+y=20(3)由(3)式可知,x 变化范围是 010 备注:易语言例程:052.马克思手稿中的数学题.e 名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 43 页 -共 43 页第 27 页共 43 页第 27 页序号:053 使用算法:递归问题:上楼梯(递归)问题
48、描述:某人上台阶,他一步可以迈一个台阶或两个台阶,共有个台阶,编程输出他所有可能上法。问题分析:如:有 4 个台阶,输出应是:2 2 2 1 1 1 2 1 1 1 2 1 1 1 1 共有种上法。按照上面列出的式子,一个一个的往出找,先找所有两步走的,然后再依次将每一个两步走的变成一步走的,一步走的变成两步走的。一直到所有都变成一步走的为止。备注:易语言例程:053.上楼梯(递归).e 序号:054 使用算法:非递归问题:上楼梯(非递归)问题描述:某人上台阶,他一步可以迈一个台阶或两个台阶,共有个台阶,编程输出他所有可能上法。问题分析:如:有 4 个台阶,输出应是:2 2 2 1 1 1 2
49、 1 1 1 2 1 1 1 1 共有种上法。按照上面列出的式子,一个一个的往出找,先找所有两步走的,然后再依次将每一个两步走的变成一步走的,一步走的变成两步走的。一直到所有都变成一步走的为止。备注:易语言例程:054.上楼梯(非递归).e 名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 43 页 -共 43 页第 28 页共 43 页第 28 页序号:055 使用算法:问题:金额大小写转换问题描述:金额大小写转换。输入小写的数字金额形式,将其转换成大写的金额形式。问题分析:金额的大小写转换,可以先定义两个文本串,一个用于存放大写的数字,比如:壹,贰,参,等;一个用存放对应每一
50、个金额数字位的名称,比如:分,角,元,拾,佰等等。转换时,只要找出每一个小写数字的对应大写形式和它的数字位名称即可。备注:易语言例程:055.金额大小写转换.e 序号:056 使用算法:二分法问题:求一元二次方程的根(二分法)问题描述:用二分法求一元二次方程x2-2-x=0 在0,3区间的根。问题分析:二分法属于数学问题,但为了说清楚问题就再说一下原理。先取二元方程 f(x)的两个初略解x1 和 x2,若 f(x1)与 f(x2)的符号相反,则方程f(x)=0 在x1,x2区间至少有一个根;若f(x)在x1,x2区间单调,则至少有一个实根;所以取x3=(x1+x2)/2,并在 x1 和 x2