`
BBLLMYD
  • 浏览: 17891 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

枚举算法

阅读更多

枚举(穷举)法

 

枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:

(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("没有符合条件的 ");
		}
	}

 运行结果:

 

  • 大小: 8.2 KB
  • 大小: 833 Bytes
  • 大小: 25.3 KB
  • 大小: 10 KB
1
0
分享到:
评论

相关推荐

    枚举算法精选习题集

    枚举算法从入门到精通习题集,超详细,可以作为广大人民群众的算法入门知识

    枚举算法及其程序实现

    枚举算法是一种基础的计算机解决问题的方法,它通过尝试所有可能的解决方案来找到正确的答案。在本节课中,学生们将通过帮助故事主人公农农寻找欢欢水晶球和计算其数量的过程,学习枚举算法的基本概念和应用。 首先...

    枚举算法枚举算法枚举算法.ppt

    枚举算法枚举算法枚举算法.ppt

    枚举算法枚举算法.ppt

    枚举算法基础知识点 枚举算法是一种基于计算机特点的思维方法,当问题的数学公式或规则未找到时,可以根据问题中的部分条件(约束条件)将可能解的情况列举出来,然后一一验证是否符合整个问题的求解要求。本篇文章...

    1.理解枚举算法 2.利用枚举算法实现简单问题编程求解

    枚举算法是一种基础而实用的计算机算法,广泛应用于解决各种计算问题。它的基本思想是对所有可能的解进行尝试,直到找到正确答案或者确认无解为止。这种算法在处理有限且可枚举的解空间时尤为有效,比如在解决排列...

    枚举算法公开课.doc

    枚举算法公开课 本资源是关于枚举算法的教学内容,旨在帮助学生理解枚举算法的基本思想,并能根据问题的具体要求,设计枚举算法,通过编程来解决问题。 一、教学目标 * understanding the basic idea of ...

    枚举算法的编程实现.pptx

    枚举算法的编程实现 枚举算法是一种常用的编程算法,它通过枚举所有可能的解来解决问题。在这里,我们将讲解如何使用枚举算法来解决一个特殊的数字问题。 问题描述: 寻找所有 六位数,满足以下条件: * 它是一个...

    枚举算法教学设计.pdf

    枚举算法教学设计 本教学设计的主要目标是让高一上学期的信息技术根底学生熟悉用枚举算法设计程序的根本思路,学会使用枚举算法解决现实生活、学习中所遇到的问题,并了解枚举算法的局限性。 一、教学目标 * 知识...

    研究生课程算法设计与分析之枚举算法PPT学习教案.pptx

    "枚举算法设计与分析" 枚举算法是算法设计与分析中的一种重要方法,它的基本思想是按照问题本身的性质,一一列举出该问题所有可能的解,并在列举的过程中,逐一检验每个可能解是否是问题的真正解。若是,则采纳这个...

    枚举算法教学设计.doc

    枚举算法是一种基础而重要的程序设计方法,广泛应用于各种计算问题中。在教学设计中,其目标在于让学生理解和掌握枚举算法的基本思路,学会运用枚举算法解决实际问题,并了解其局限性。教学内容针对已经对VB编程有...

    程序设计培训讲义3:枚举算法(课件).ppt

    枚举算法的基本概念和应用 枚举算法(Brute Force Algorithm)是一种常用的算法思想,它的基本思想是对所有可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。枚举...

    解析与枚举算法PPT学习教案.pptx

    "解析与枚举算法PPT学习教案.pptx" 这份PPT学习教案主要介绍了解析算法和枚举算法的概念、原理和应用。下面是对这份PPT学习教案的详细解读和知识点总结: 一、解析算法 解析算法是一种数学方法,用于找出表示问题...

    枚举算法ppt

    这是枚举算法课程讲解的ppt,希望有所用处。

    高中信息技术枚举算法PPT学习教案.pptx

    "高中信息技术枚举算法PPT学习教案.pptx" 这个PPT学习教案主要讲解枚举算法的应用,通过实例分析和编程实现,帮助学生理解枚举算法的原理和应用。 枚举算法 枚举算法是一种常用的解决问题的方法,它通过枚举所有...

    木棒三角形 C语言实现 枚举算法

    根据给定的信息,本文将详细解释“木棒三角形 C语言实现 枚举算法”这一主题,特别是如何通过枚举算法在C语言中求解直角三角形的最大面积。 ### 一、问题背景 题目要求从给定的一组正整数(长度不超过100)中找出...

    一种求解矩形packing问题的智能枚举算法.pdf

    ### 一种求解矩形Packing问题的智能枚举算法 #### 概述 本文介绍了一种用于解决矩形Packing问题的智能枚举算法。矩形Packing问题是指在一个固定大小的空间内放置多个不同尺寸的矩形,使得总的未使用空间最小。这一...

Global site tag (gtag.js) - Google Analytics