计算机常用算法枚举算法22014
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 如:12321
• 可设a,b,c,d,e分别表示万位、千位、百味、 十位、个位
春闺
垂帘画阁画帘垂, 谁系怀思怀系谁? 影弄花枝花弄影, 丝牵柳线柳牵丝。 脸波横泪横波脸, 眉黛浓愁浓黛眉。 永夜寒灯寒夜永, 期归梦还梦归期。
经典题目:虫食算
• 所谓虫食算,就是原先的算式中有一部 分被虫子啃掉了,需要我们根据剩下的
百鸡 如何提高效率?
作业1:百马百瓦
• 有一百匹马,分三种:大马,中马,小 马。有一百块同样的瓦。 一匹大马驼3块 瓦,一匹中马驼1块瓦,三匹小马合驼1 块瓦。这一百匹马,正好驼一百块瓦。 问:大马,中马,小马各多少匹?请列 出所有可能的方案。
素数判断
• 任意给一个正整数n, • 判断其是否为素数
把各种可能的情况都考虑到,并对全部可
能结果逐一进行判断,过滤掉那些不符合 要求的,保留符合要求的结果,这种方法
一般思路:
叫枚举算法
步骤一:确定可能解的范围;
步骤二:根据各种约束条件,对每一个可能解进行判断
第三讲 (遍历算法)
安财CA(255860045) (回溯算法之一)
如果可能解,不完美(不连续或离散)怎么办?
• 素数(质数):只能 被1或本身整除。如2, 3,5,7
解题空间:
2~n-1 优化为:2~ 排除条件:
是否整除
素数判断
• 任意给一个正整数n, • 判断其是否为素数
• 素数(质数):只能 被1或本身整除。如2, 3,4
解题空间: 2~n-1 优化为:2~ 排除条件: 是否整除
S1] isPrime=true S2]i从2到根下n,对 每个i执行如下操作 S2.1]如果n能整除i, 则转s2.2
S2.2]isPrime=false S2.3]转s3 S3]如果isPrime=true, 是素数;否则不是素 数
求所有4位素数
• 求所有的4位素数
S1]n从1000到9999,对每个n执 行如下操作 S1.1]如果n是素数,则显示
解题空间:
1000~9999 优化为:? 排除条件:
是否是素数
判断n是否是素数
对于每个n完成如下操作 • S1.1]把n的各位分别截取存入a,b,c,d,e,f,g,h,i. • S1.2]如果上述各位有零或相同,看下一个n • S1.3] [行]如果a+b+c<>15或 。。,看下个n • S1.4] [列]如果a+d+g<>15或 。。,看下个n • S1.5] [对角线]如果a+e+i<>15或 。。,看下个n • S1.6]显示当前结果
Y
y ←35-x 2x+4y=94? N
Y
正确解
x ←x+1
结束
又后一例:
• 我国古代数学家张丘建在《算经》中提出了著名
的百鸡百钱问题 “鸡翁一值钱5, 鸡母一值钱3, 鸡雏三值钱1” 现有100钱,欲 买100只鸡,问: 鸡翁、鸡母、鸡 雏各买几只?
分析:
设x,y,z分别为买的鸡 翁、鸡母、鸡雏的个数
s5.y←y+1
s6.如果y<=33,转3;否则7
s7.x←x+1
百钱
s8.如果x<=20 ,则转2
S1]x从0到20,每次递增1,对每 个x执行如下子操作。 S1.1]y从0到33,每次子递增1, 对每个y执行如下操作。
S1.1.1]z=100-x-y S1.1.2]如果5x+3y+z/3=100, 则输出x,y,z
数字来判定被啃掉的字母。来看一个简 单的例子:
580*5 + 8#633
解题范围: m:
____________ 144678
n: 约束条件:
…..
经典题目:虫食算
• 所谓虫食算,就是原先的算式中有一 部分被虫子啃掉了,需要我们根据剩 下的数字来判定被啃掉的字母。来看 一个简单的例子: 580*5 + 8#633 ____________ 144678
x Y=35-x
0
35
1
34
2
33
…
…
35
0
开始 x ←0 x<=35 N
Y
y ←35-x 2x+4y=94? N
Y
正确解
x ←x+1
结束
• S1]x从0到35,每次 递增1。对每个x执 行如下操作
• S1.1][头]y=35-x
• S1.2][腿]如果 2x+4y=94,则x,y为 正确解。
开始 x ←0 x<=35 N
S1] isPrime=true S2]i从2到根下n,对每个i执行如下操 作 S2.1]如果n能整除i,则转s2.2
S2.2]isPrime=false S2.3]转s3 S3]如果isPrime=true,是素数;否则 不是素数
作业2:求5位正整数的所有回文数
• 回文数:就是顺 读和逆读都是一 样的数字
分析:
• 中国古代《孙子算经》共三卷,成书大约在公元 5世纪。 “鸡兔同笼”问题:
• 今有雉兔同笼, 上有三十五头, 下有九十四足, 问雉兔各几何?
则:x+y=35
约束
条件
2*x+4*y=94
可能的解:
X: 0-35 Y: 0-23
可能的解
设x,y分别为鸡、兔的个数
建立一个循环, 可 能的解如wenku.baidu.com:
Y
y ←0 y<=33 N
Y
判断可能的解 是否是真正的解
y ←y+1
x ←x+1
结束
检验可能的解 算法:
是否真正的解
判断:5*x+3*y+z/3=100 若是,x,y,z就是一个真
正的解
s1.x←0
s2. y←0
s3. z←100-x-y
s4.如果5x+3y+z/3=100,则输出x,y,z;
否则转5
49 2
357
816
二四为肩 六八为足 载九履一 左三右七 五居中央
思考:残缺的3阶魔方-作业4
• 现在不小心九宫格的四角被 小虫子吃掉了,问:你能补 全这个九宫格吗?
• 写出算法。
?1 ? 357 ?9 ?
则:x+y+z=100
5*x+3*y+z/3=100 可能的解
X: 0-20 Y: 0-33
和:效率和 逻辑的折中
Z: 100-x-y
建立一个双重循环, 可能的解如下:
xyz 0 0 100 0 1 99 0 2 98 ……… 0 33 67 1 0 99 ……… 20 33 47
开始 x ←0 x<=20 N
解题范围:
m:58005~58095 n:80633~89633 约束条件:
…..
S1]m从58005到58095,每次递 增10.对每个m执行如下操作 S1.1]n从80633到89633,每次 递增1000,对每个n执行如下 操作
S1.1.1]如果m+n=144678,则 显示m,n
虫食算-----求下图的所有可能 答案—作业3
3阶幻方
• 如图一个九宫格内分别写了 1-9的数字,而且每行、每列 和对角线上的数字和是相同 的。
• 你能找到所有的答案吗?
49 2
357
816
二四为肩 六八为足 载九履一 左三右七 五居中央
ab c def ghi
3阶幻方-一例
• 令a,b,c,d,e,f,g,h,i分别表示各位: • S1]n从123456789到987654321,每次递增1,
• 可设a,b,c,d,e分别表示万位、千位、百味、 十位、个位
春闺
垂帘画阁画帘垂, 谁系怀思怀系谁? 影弄花枝花弄影, 丝牵柳线柳牵丝。 脸波横泪横波脸, 眉黛浓愁浓黛眉。 永夜寒灯寒夜永, 期归梦还梦归期。
经典题目:虫食算
• 所谓虫食算,就是原先的算式中有一部 分被虫子啃掉了,需要我们根据剩下的
百鸡 如何提高效率?
作业1:百马百瓦
• 有一百匹马,分三种:大马,中马,小 马。有一百块同样的瓦。 一匹大马驼3块 瓦,一匹中马驼1块瓦,三匹小马合驼1 块瓦。这一百匹马,正好驼一百块瓦。 问:大马,中马,小马各多少匹?请列 出所有可能的方案。
素数判断
• 任意给一个正整数n, • 判断其是否为素数
把各种可能的情况都考虑到,并对全部可
能结果逐一进行判断,过滤掉那些不符合 要求的,保留符合要求的结果,这种方法
一般思路:
叫枚举算法
步骤一:确定可能解的范围;
步骤二:根据各种约束条件,对每一个可能解进行判断
第三讲 (遍历算法)
安财CA(255860045) (回溯算法之一)
如果可能解,不完美(不连续或离散)怎么办?
• 素数(质数):只能 被1或本身整除。如2, 3,5,7
解题空间:
2~n-1 优化为:2~ 排除条件:
是否整除
素数判断
• 任意给一个正整数n, • 判断其是否为素数
• 素数(质数):只能 被1或本身整除。如2, 3,4
解题空间: 2~n-1 优化为:2~ 排除条件: 是否整除
S1] isPrime=true S2]i从2到根下n,对 每个i执行如下操作 S2.1]如果n能整除i, 则转s2.2
S2.2]isPrime=false S2.3]转s3 S3]如果isPrime=true, 是素数;否则不是素 数
求所有4位素数
• 求所有的4位素数
S1]n从1000到9999,对每个n执 行如下操作 S1.1]如果n是素数,则显示
解题空间:
1000~9999 优化为:? 排除条件:
是否是素数
判断n是否是素数
对于每个n完成如下操作 • S1.1]把n的各位分别截取存入a,b,c,d,e,f,g,h,i. • S1.2]如果上述各位有零或相同,看下一个n • S1.3] [行]如果a+b+c<>15或 。。,看下个n • S1.4] [列]如果a+d+g<>15或 。。,看下个n • S1.5] [对角线]如果a+e+i<>15或 。。,看下个n • S1.6]显示当前结果
Y
y ←35-x 2x+4y=94? N
Y
正确解
x ←x+1
结束
又后一例:
• 我国古代数学家张丘建在《算经》中提出了著名
的百鸡百钱问题 “鸡翁一值钱5, 鸡母一值钱3, 鸡雏三值钱1” 现有100钱,欲 买100只鸡,问: 鸡翁、鸡母、鸡 雏各买几只?
分析:
设x,y,z分别为买的鸡 翁、鸡母、鸡雏的个数
s5.y←y+1
s6.如果y<=33,转3;否则7
s7.x←x+1
百钱
s8.如果x<=20 ,则转2
S1]x从0到20,每次递增1,对每 个x执行如下子操作。 S1.1]y从0到33,每次子递增1, 对每个y执行如下操作。
S1.1.1]z=100-x-y S1.1.2]如果5x+3y+z/3=100, 则输出x,y,z
数字来判定被啃掉的字母。来看一个简 单的例子:
580*5 + 8#633
解题范围: m:
____________ 144678
n: 约束条件:
…..
经典题目:虫食算
• 所谓虫食算,就是原先的算式中有一 部分被虫子啃掉了,需要我们根据剩 下的数字来判定被啃掉的字母。来看 一个简单的例子: 580*5 + 8#633 ____________ 144678
x Y=35-x
0
35
1
34
2
33
…
…
35
0
开始 x ←0 x<=35 N
Y
y ←35-x 2x+4y=94? N
Y
正确解
x ←x+1
结束
• S1]x从0到35,每次 递增1。对每个x执 行如下操作
• S1.1][头]y=35-x
• S1.2][腿]如果 2x+4y=94,则x,y为 正确解。
开始 x ←0 x<=35 N
S1] isPrime=true S2]i从2到根下n,对每个i执行如下操 作 S2.1]如果n能整除i,则转s2.2
S2.2]isPrime=false S2.3]转s3 S3]如果isPrime=true,是素数;否则 不是素数
作业2:求5位正整数的所有回文数
• 回文数:就是顺 读和逆读都是一 样的数字
分析:
• 中国古代《孙子算经》共三卷,成书大约在公元 5世纪。 “鸡兔同笼”问题:
• 今有雉兔同笼, 上有三十五头, 下有九十四足, 问雉兔各几何?
则:x+y=35
约束
条件
2*x+4*y=94
可能的解:
X: 0-35 Y: 0-23
可能的解
设x,y分别为鸡、兔的个数
建立一个循环, 可 能的解如wenku.baidu.com:
Y
y ←0 y<=33 N
Y
判断可能的解 是否是真正的解
y ←y+1
x ←x+1
结束
检验可能的解 算法:
是否真正的解
判断:5*x+3*y+z/3=100 若是,x,y,z就是一个真
正的解
s1.x←0
s2. y←0
s3. z←100-x-y
s4.如果5x+3y+z/3=100,则输出x,y,z;
否则转5
49 2
357
816
二四为肩 六八为足 载九履一 左三右七 五居中央
思考:残缺的3阶魔方-作业4
• 现在不小心九宫格的四角被 小虫子吃掉了,问:你能补 全这个九宫格吗?
• 写出算法。
?1 ? 357 ?9 ?
则:x+y+z=100
5*x+3*y+z/3=100 可能的解
X: 0-20 Y: 0-33
和:效率和 逻辑的折中
Z: 100-x-y
建立一个双重循环, 可能的解如下:
xyz 0 0 100 0 1 99 0 2 98 ……… 0 33 67 1 0 99 ……… 20 33 47
开始 x ←0 x<=20 N
解题范围:
m:58005~58095 n:80633~89633 约束条件:
…..
S1]m从58005到58095,每次递 增10.对每个m执行如下操作 S1.1]n从80633到89633,每次 递增1000,对每个n执行如下 操作
S1.1.1]如果m+n=144678,则 显示m,n
虫食算-----求下图的所有可能 答案—作业3
3阶幻方
• 如图一个九宫格内分别写了 1-9的数字,而且每行、每列 和对角线上的数字和是相同 的。
• 你能找到所有的答案吗?
49 2
357
816
二四为肩 六八为足 载九履一 左三右七 五居中央
ab c def ghi
3阶幻方-一例
• 令a,b,c,d,e,f,g,h,i分别表示各位: • S1]n从123456789到987654321,每次递增1,