用穷举法设计算法.ppt_第1页
用穷举法设计算法.ppt_第2页
用穷举法设计算法.ppt_第3页
用穷举法设计算法.ppt_第4页
用穷举法设计算法.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用穷举法设计算法用穷举法设计算法 n问题1: 有一把锁和一串钥匙(共有10把钥匙) ,怎样找出所有开这把锁的钥匙? n穷举算法的概念: 穷举算法就是按问题本身的性质,通过多 重循环一一列举出该问题所有可能的解(不能 遗漏,也不能重复),并在逐一列举的过程中 ,检验每个可能的解是否是问题的真正解,若 是,我们采用这个解,否则抛弃它。 用穷举法设计算法用穷举法设计算法 n 穷举算法的要点: 列举所有可能的解(不能遗漏,也不能重 复),检验每个可能的解。 问题2:从110中找出所有是3倍数的数 。用流程图描述解决此数学问题的算法。 输出i 开始 i1 i10 i i +1 结束 N Y i是3的倍数 Y N #include using namespace std; int main() int i=1; while(i using namespace std; int main() int i; for(i=1;i using namespace std; int main() int j,i,n; j=1; While(j using namespace std; int main() int i,j; for (i=1;i using namespace std; int main() int x,y,z; for(x=0;x using namespace std; int main() int x,y,z; for(x=0;x int main() int x,y,z; for(x=0;x using namespace std; int main() int x,y,z; for(x=0;x using namespace std; int main() char thisman; int cond; for(thisman=A; thismanc) 穷举法穷举法 穷举法的基本概念 穷举方法是基于计算机特点而进行解题的思维方法穷举方法是基于计算机特点而进行解题的思维方法 。一般是在一时找不出解决问题的更好途径(即从。一般是在一时找不出解决问题的更好途径(即从 数学上找不到求解的公式或规则)时,可以根据问数学上找不到求解的公式或规则)时,可以根据问 题中的的部分条件(约束条件)将所有可能解的情题中的的部分条件(约束条件)将所有可能解的情 况列举出来,然后通过一况列举出来,然后通过一 一验证是否符合整个问题一验证是否符合整个问题 的求解要求,而得到问题的解。这样解决问题的方的求解要求,而得到问题的解。这样解决问题的方 法我们称之为穷举算法。穷举算法特点是算法简单法我们称之为穷举算法。穷举算法特点是算法简单 ,但运行时所花费的时间量大。因此,我们在用穷,但运行时所花费的时间量大。因此,我们在用穷 举方法解决问题时,应尽可能将明显的不符合条件举方法解决问题时,应尽可能将明显的不符合条件 的情况排除在外,以尽快取得问题的解。的情况排除在外,以尽快取得问题的解。 穷举算法模式 1、问题解的可能搜索的范围: 用循环或循环嵌套结构实现 2、写出符合问题解的条件。 3、能使程序优化的语句,以便缩小搜索范 围,减少程序运行时间。 穷举法应用 穷举穷举 法应应用很多,比如一些密码码破译软译软 件 通常就是用的穷举穷举 算法。如在QQ上, OicqPassOver这这个工具穷举穷举 你的口令,它 根据机器性能最高可以每秒测试测试 20000个口 令,如果口令简单简单 ,一分钟钟内,密码码就会 遭到破译译。下面我们们来以sznoi上的例子说说 明穷举穷举 法的基本应应用。 32:8080/oj/ d052: 小球颜色方案 内容: 一个看不见的袋子中装有红、橙、黄、绿、蓝五 种颜色的小球若干,每次随意摸出三个小球,输 出三个小球颜色都不一样的所有可能的方案总数 。(我承认害了不少人,大家认为:红、橙、黄 和 橙、红、黄不一样吧,这样就是XX种,谢谢) d052: 小球颜色方案 #include using namespace std; int main() int a,b,c,n=0; for (a=1;a using namespace std; int main() int a,b,c; for (a=1;a using namespace std; int main() int x,y,z; for(x=1;x using namespace std; int main() int one,zero; int N_one=0,N_zero=0,n,i,j,k,num; cinn; for (i=1;izero) N_one+; else N_zero+; cout 1=2 f010: 竞赛安排 int main() int n,day,cc,dui1,dui2; int a7; bool flag65,flag16565; cinn; a1=2;a2=4;a3=8;a4=16;a5=32;a6=64; memset(flag1,0,sizeof(flag1); for (day=1;day ; memset(flag,0,sizeof(flag); for (cc=1;cc=an/2;cc+) for (dui1=1;dui1=an-1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论