枚举(穷举)法
枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:
(1):可预先确定候选答案的数量;
(2):候选答案的范围在求解之前必须有一个确定的集合.
实例1:填数游戏.
Java代码描述:
public static void main(String[] args) { int multi = 1; int result = 0; int i1, i2, i3, i4, i5; for (i1 = 1; i1 <= 9; i1++) { for (i2 = 0; i2 <= 9; i2++) { for (i3 = 0; i3 <= 9; i3++) { for (i4 = 0; i4 <= 9; i4++) { for (i5 = 0; i5 <= 9; i5++) { multi = i1 * 10000 + i2 * 1000 + i3 * 100 + i4 * 10 + i5; result = i5 * 100000 + i5 * 10000 + i5 * 1000 + i5 * 100 + i5 * 10 + i5; if (multi * i1 == result) { System.out.println(i1 + " " + i2 + " " + i3 + " " + i4 + " " + i5); System.out.println(" " + i1); System.out.println("-----------------"); System.out.println(i5 + " " + i5 + " " + i5 + " " + i5 + " " + i5); break; } } } } } } }
运行结果:
实例2:填运算符:
Java代码描述:
private static void tysf() { int[] i = new int[5];// 数组i用来表示4个运算符 int j; // 循环变量 int sign; // 累加运算时的符号 int result = 0; // 保存运算式的结果值 int count = 0; // 计数器,统计符合条件的方案 int[] num = new int[6]; // 保存操作数 float left, right; // 保存中间结果 char[] oper = { ' ', '+', '-', '*', '/' }; // 运算符 System.out.println("请输入五个数"); Scanner sc = new Scanner(System.in); for (int ii = 1; ii < num.length; ii++) { num[ii] = sc.nextInt(); } System.out.println("请输入结果"); result = sc.nextInt(); // for (i[0] = 1; i[0] < 4; i[0]++) { //循环4中填运算符,1表示+,2表示-,3表示*,4表示/ // if ((i[0] < 4) || (num[1] != 0)) { //运算符如果是/,则第二个运算数不能为0 for (i[1] = 1; i[1] <= 4; i[1]++) { if ((i[1] < 4) || (num[2] != 0)) { for (i[2] = 1; i[2] <= 4; i[2]++) { if ((i[2] < 4) || (num[3] != 0)) { for (i[3] = 1; i[3] <= 4; i[3]++) { if ((i[3] < 4) || (num[4] != 0)) { for (i[4] = 1; i[4] <= 4; i[4]++) { if ((i[4] < 4) || (num[5] != 0)) { left = 0; right = num[1]; sign = 1; for (j = 1; j <= 4; j++) { switch (oper[i[j]]) { case '+': left = left + sign * right; sign = 1; right = num[j + 1]; break; case '-': left = left + sign * right; sign = -1; // 通过sign=-1实现减法 right = num[j + 1]; break; case '*': right = right * num[j + 1]; // 实现乘法 break; case '/': right = right / num[j + 1]; // 实现除法 break; } } if (left + sign * right == result) { count++; System.out.print(count + " "); for (j = 1; j <= 4; j++) { System.out.print(num[j] + "" + oper[i[j]]); } System.out.println("=" + result); } } } } } } } } } if (count == 0) { System.out.println("没有符合条件的 "); } }
运行结果:
相关推荐
枚举算法从入门到精通习题集,超详细,可以作为广大人民群众的算法入门知识
枚举算法,顾名思义,是一种通过列举所有可能的选项,逐一排查以寻找问题的解决方案的算法。在计算机科学领域,枚举算法是一种基础且应用广泛的解决问题的方法。它通过穷举所有可能的情况,直到找到满足条件的答案。...
枚举算法枚举算法枚举算法.ppt
枚举算法基础知识点 枚举算法是一种基于计算机特点的思维方法,当问题的数学公式或规则未找到时,可以根据问题中的部分条件(约束条件)将可能解的情况列举出来,然后一一验证是否符合整个问题的求解要求。本篇文章...
枚举算法是一种基础而实用的计算机算法,广泛应用于解决各种计算问题。它的基本思想是对所有可能的解进行尝试,直到找到正确答案或者确认无解为止。这种算法在处理有限且可枚举的解空间时尤为有效,比如在解决排列...
枚举算法公开课 本资源是关于枚举算法的教学内容,旨在帮助学生理解枚举算法的基本思想,并能根据问题的具体要求,设计枚举算法,通过编程来解决问题。 一、教学目标 * understanding the basic idea of ...
枚举算法教学设计 本教学设计的主要目标是让高一上学期的信息技术根底学生熟悉用枚举算法设计程序的根本思路,学会使用枚举算法解决现实生活、学习中所遇到的问题,并了解枚举算法的局限性。 一、教学目标 * 知识...
枚举算法是一种基础且强大的问题解决手段,在编程领域广泛应用。在某些情况下,当问题的解空间有限时,通过遍历所有可能的解来找到问题的答案是一种简单直观的方法。本文将详细介绍枚举算法的编程实现,以及如何运用...
枚举算法的基本概念和应用 枚举算法(Brute Force Algorithm)是一种常用的算法思想,它的基本思想是对所有可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。枚举...
"解析与枚举算法PPT学习教案.pptx" 这份PPT学习教案主要介绍了解析算法和枚举算法的概念、原理和应用。下面是对这份PPT学习教案的详细解读和知识点总结: 一、解析算法 解析算法是一种数学方法,用于找出表示问题...
枚举算法作为一种基础而重要的程序设计方法,在解决各种计算问题上有着不可或缺的作用。对于已经具备一定VB编程基础的高一学生而言,深入理解和掌握枚举算法不仅能够提高他们运用编程解决实际问题的能力,而且能够...
枚举算法作为算法设计与分析中的一个基本方法,广泛应用于各类问题求解。它的核心思想是通过对问题所有可能解的穷举和逐一验证,确保能够找到满足条件的正确答案。因其解的准确性和全面性,以及相对简单的实现方式,...
这是枚举算法课程讲解的ppt,希望有所用处。
`test.m`可能是实现某个枚举算法的示例代码,用于演示如何在MATLAB中应用枚举法解决问题。 3. **类方法与枚举** `Person_one.m`可能定义了一个类,该类包含与枚举相关的属性或方法。在MATLAB的面向对象编程中,...
今天,我们就将通过一系列生动的实例,深入学习枚举算法的概念、特点以及如何通过编程实现枚举算法。 首先,我们来了解一下什么是枚举算法。在计算机科学中,枚举算法是一种非常直观的算法策略,它的基本思想就是...
根据给定的信息,本文将详细解释“木棒三角形 C语言实现 枚举算法”这一主题,特别是如何通过枚举算法在C语言中求解直角三角形的最大面积。 ### 一、问题背景 题目要求从给定的一组正整数(长度不超过100)中找出...