基本的算法策略

合集下载

五大常用算法(一)贪心算法

五大常用算法(一)贪心算法

五⼤常⽤算法(⼀)贪⼼算法⼀、基本概念 所谓贪⼼算法是指,在对问题求解时,总是做出在当前来看是最好的选择。

也就是说,不从整体最优上加以考虑,通过贪⼼算法做出来的往往是在把原问题拆分成⼏个⼩问题,分别求每个⼩问题的最优解,再把这些“局部最优解”叠起来,就作为整个问题当前的最优解。

贪⼼算法⽆固定的算法框架,算法设计的关键是贪⼼策略的选择,必须注意的是,贪⼼算法不是对所有问题都能得到整体最优解,选择贪⼼策略必须具备⽆后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关)。

⽐如,求最⼩⽣成树的Prim算法和 Kruskal算法都是漂亮的贪⼼算法。

⼆、基本思路建⽴数学模型来描述问题;把求解的问题分成若⼲个⼦问题;对每个⼦问题求解,得到⼦问题的局部最优解;把⼦问题的局部最优解合成原来问题的⼀个解。

三、存在的问题不能保证求得的最后解是最佳的;不能⽤来求最值的问题;只能求满⾜某些约束条件的可⾏解的范围。

四、例题分析 【背包问题】有⼀个背包,容量是M=150,有7个物品,物品可以分割成任意⼤⼩。

要求尽可能让装⼊背包中的物品总价值最⼤,但不能超过总容量。

物品:A B C D E F G 重量:35 30 60 50 40 10 25 价值:10 40 30 50 35 40 30 题⽬分析:为了使背包总价值最⼤,我们可以制定三种策略:1. 每次挑选价值最⼤的物品装⼊背包;2. 每次挑选重量最⼩的物品装⼊背包;3. 每次挑选单位重量价值最⼤的物品装⼊背包; 策略 1 结果:选择 D B F E 总重量 130 总价值 165; 策略 2 结果:选择 F G B A E 总重量 140 总价值 155; 策略 3 结果:选择 F B G D A 总重量 150 总价值 170; 结果分析:可以看到单位重量价值最⼤的策略的结果⽐其它更好。

总结:由此可见,策略制定的不同,得到的解也会不同,我们只需要针对不同的问题制定不同的策略即可。

第五章基本自适应算法

第五章基本自适应算法

第五章基本自适应算法自适应算法是一种能够根据问题的性质和特点来调整自身参数以达到更好效果的算法。

在机器学习和优化问题的求解中,自适应算法可以提高算法的鲁棒性、收敛性和性能。

本章将介绍几种基本的自适应算法。

1.自适应学习率学习率是很多优化算法中的一个重要参数。

学习率过大会导致算法不稳定,学习率过小会导致算法收敛速度慢。

自适应学习率算法是一种能够根据问题的性质自动调整学习率的算法。

常见的自适应学习率算法有动态学习率和自适应学习率调整。

动态学习率是指学习率随着迭代次数的增加而不断减小。

自适应学习率调整是指根据每次迭代的损失函数值调整学习率。

这种方法可根据损失函数值的大小动态调整学习率,使得在损失函数较大时学习率较大,在损失函数较小时学习率较小,从而提高算法的收敛速度和性能。

2.自适应粒子群算法粒子群算法是一种模拟鸟群寻找食物的优化算法。

在标准粒子群算法中,粒子通过随机移动来最优解。

然而,随机性可能会导致算法陷入局部最优解。

为了克服这个问题,引入了自适应粒子群算法。

自适应粒子群算法基于控制参数的统计特性来调整方向和速度。

通过自适应调整的参数,算法可以自动适应问题的特性,从而达到更好的效果。

3.自适应遗传算法遗传算法是一种模拟生物进化的优化算法。

在标准遗传算法中,通过交叉和变异产生新的个体,并通过适应度函数选择优秀个体进行下一代的繁衍。

然而,遗传算法的结果可能会受到参数的选择和问题的变化的影响。

为了提高算法性能,自适应遗传算法引入了自适应策略。

自适应策略通过根据个体适应度来调整交叉和变异参数,从而使算法能够自动适应问题的特性。

这样可以提高算法的鲁棒性和性能。

4.自适应步长差分进化算法差分进化算法是一种基于种群的优化算法。

在标准差分进化算法中,通过选择个体的差分向量来产生新的个体,并通过适应度函数选择优秀个体进行下一代的繁衍。

然而,差分进化算法的步长参数对算法的性能有很大的影响。

为了提高算法的性能,自适应步长差分进化算法引入了自适应步长。

小学数学计算教学中算理算法的教学策略研究

小学数学计算教学中算理算法的教学策略研究

小学数学计算教学中算理算法的教学策略研究算理算法是学生在学习数学过程中应把握的基本专业技能和素质,小学数学教学不但要记牢规律性,还要锻炼学生的计算能力,使学生在学习的过程中真正实现对数学知识的理解。

小学生的典型特点是自身控制能力差,所以小学数学老师应该丰富课堂教学,在研究活动中提高学生的研究能力,应用图形语言与实际生活的联络,真真正正重视算理算法教学。

一、小学数学算理算法教学的重要性计算理论是算理算法的基本原理,就是指计算过程中的思维方式。

在小学数学中,正确引导学生把握为何使用这种优化算法比简单记忆要关键得多,因此应提升学生对数学理论的了解。

小学数学理论知识随教学进展难度增加,各阶段展现方式略微不同。

在小学数学教材文字中,数学理论知识的表现形式具备相当的一致性,一般来说,低学段主要使用图片来帮助学生了解计算理论知识,中年级主要使用公式信息来表述计算理论知识,高学段主要使用直线图来记忆计算理论知识[1]。

学习算理算法的目的是让学生把握数学标准的计算过程和意义,能够单独处理算理算法有关问题,以此逐渐提高学习兴趣。

算理算法教学离不了生活指导,老师可以运用教材内容中的实例,让学生分析实际问题的处理方案,回应计算理论,提高学生的计算能力,让学生在探索和计算过程中形成探索观念。

数学教学并不枯燥乏味,老师在教算理算法知识时,应激励学生动手操作,扩展学生的想象力,实现公式计算与图形的变换,通过数学学习,学生能提升基础能力,主动革除计算中不必要的流程,提高对问题的掌握和解决能力。

数学教学要为学生创造一些实践机会,正确引导学生用数学的眼光分析和观察周边的事情,提高学生的研究兴趣。

二、影响小学生算理算法能力的因素俗话说“勤能补拙”,只有把握了基础知识,才可以熟练掌握迅速计算的方法。

在小学数学中,学生只有紧紧把握定义、计算理论、自然规律性等基本知识,才可以恰当灵便地选用和产生计算专业技能[2]。

(一)感知较抽象、不准确因为年纪小,小学生对算理算法的认知通常是抽象的、模糊的,他们只能关注到一些表面问题,而计算问题本身并不能吸引学生的专注力,它的表达形式简单,更容易造成学生的认知不精确。

数学运算和问题解决的基本策略

数学运算和问题解决的基本策略

数学运算和问题解决的基本策略在数学领域,数学运算和问题解决是我们学习的基础。

有一些基本策略可以帮助我们更好地进行数学计算和解决问题。

本文将介绍数学运算和问题解决的基本策略,以帮助读者更好地掌握数学技巧。

一、数学运算的基本策略1. 打好基础:数学运算的基础是掌握好四则运算。

在解决更复杂的数学问题之前,我们需要确保自己对加减乘除等基本运算符号的运用非常熟练。

2. 灵活运用适当的算法:在进行数学运算时,我们需要根据题目的要求选择适当的算法。

有时,我们可以通过整除术、竖式计算等不同的算法来完成运算。

熟练掌握不同算法,并根据题目的需要选择合适的算法,能够提高我们的运算效率。

3. 合理利用数学性质:数学运算中的许多性质可以帮助我们简化运算步骤。

例如,乘法的交换律和分配律可以帮助我们快速计算复杂的乘法运算。

因此,在进行数学运算时,我们需要善于发现和运用数学性质,以简化计算过程。

4. 注意运算顺序:有时,数学运算中存在优先级的问题,我们需要根据优先级合理安排计算顺序。

例如,在一个数学表达式中,括号内的运算应该先计算,然后再进行其他运算,以确保计算结果的准确性。

二、问题解决的基本策略1. 理解问题:要解决数学问题,我们首先要全面理解题目的要求。

阅读题目时,我们需要仔细分析,确保自己理解题目的意思,并确定解题的具体目标。

2. 分析问题:在了解问题要求后,我们需要对问题进行进一步分析。

这包括确定已知条件,找出问题的关键信息,以及识别问题需要解决的主要步骤。

3. 制定解决方案:根据问题的特点,我们需要制定一个合理的解决方案。

这可能包括使用数学公式、绘制图表、建立数学模型等。

制定解决方案时,我们需要考虑解决问题的效率和准确性。

4. 实施解决方案:一旦确定了解决方案,我们需要按照计划进行实施。

这可能涉及到具体的计算和数学运算。

在实施解决方案时,我们需要确保计算的准确性,以避免错误的结果。

5. 检查答案:在解决问题后,我们需要检查结果的正确性。

算法学习中的问题分析与解决策略

算法学习中的问题分析与解决策略

算法学习中的问题分析与解决策略在计算机科学领域中,算法是解决问题的重要工具。

然而,在学习算法的过程中,我们常常会遇到各种问题。

本文将探讨算法学习中的问题分析与解决策略,帮助读者更好地应对算法学习中的困难。

一、理解问题在学习算法之前,首先要明确问题的具体要求。

理解问题是解决问题的第一步。

我们需要仔细阅读问题描述,弄清楚问题的输入和输出,以及所要求的解决方法。

如果对问题描述存在疑问,可以参考相关资料或向他人寻求帮助。

二、分析问题在理解问题的基础上,我们需要对问题进行分析。

问题分析的目的是确定问题的核心难点,找出解决问题的关键步骤。

对于复杂的问题,可以采用自顶向下的分解方法,将问题分解为若干个子问题,并逐一解决。

在问题分析的过程中,我们可以利用一些常见的算法设计模式。

例如,贪心算法适用于那些每一步都采取局部最优策略的问题;动态规划适用于具有重叠子问题性质的问题;回溯算法适用于需要穷举所有可能解的问题。

选择合适的算法设计模式可以提高问题解决的效率。

三、查找资料在解决问题的过程中,我们可能会遇到一些陌生的概念或算法。

此时,查找相关资料是解决问题的有效途径。

可以阅读相关的教材、论文或博客,了解算法的原理和应用场景。

此外,还可以参考一些在线学习资源,如MOOC(大规模开放式在线课程)或在线编程社区,与其他学习者交流和讨论。

四、实践练习理论知识的学习只是解决问题的第一步,实践练习是巩固知识和提高技能的关键。

通过编写代码,实现算法的具体步骤,我们可以更好地理解算法的原理和应用。

在实践过程中,我们可能会遇到一些错误和困难。

这时,可以利用调试工具和日志输出等方法,逐步排查错误的原因,并进行修正。

除了自主练习,还可以参加一些算法竞赛或编程挑战,与其他人进行比拼和交流。

这样不仅可以提高解决问题的能力,还可以拓宽视野,了解更多的算法和解决策略。

五、总结反思在解决问题的过程中,我们应该保持积极的心态,并及时总结经验教训。

当遇到困难或错误时,不要灰心丧气,而是要从中吸取教训,找出问题所在,并提出改进的办法。

贪心算法基本步骤

贪心算法基本步骤

贪心算法基本步骤贪心算法是一种非常常用的算法思想,广泛应用于算法设计中。

本文将介绍贪心算法的基本步骤、实现方式、应用场景以及优缺点。

一、基本步骤贪心算法的基本步骤可概括为:定义最优解的性质->利用贪心策略获得局部最优解->将局部最优解合并成一个整体最优解。

具体来说,一般包括以下几个步骤:1. 确定问题的最优解性质:要知道问题的最优解应该具有怎样的性质或特征,这些性质可以用于判断一个解是否符合规则或结果是否符合要求。

2. 构造候选解集:根据最优解的性质,不断构造可行的候选解集合,并通过一定的方法筛选出其中的解。

3. 选择最优解:从候选解集中选择一个最优解。

4. 验证最优解:通过验证最优解是否合法(满足约束条件)以及是否为问题的最优解,来验证贪心策略的正确性。

二、实现方式贪心算法的实现方式是比较灵活的,有些问题可以通过贪心策略来解决,有些则不行。

一般而言,如果问题的最优解具有贪心选择性质(即每一步的局部最优解能导致全局最优解),则采用贪心策略是可行的。

对于一些场景,我们可以通过规律来得到贪心策略。

例如:1. 集合覆盖问题:从未被覆盖的地方中选择一个覆盖点集最大的点,并删除所有覆盖的集合;2. 分数背包问题:选择性价比最高的物品,先吸纳尽量多的物品,再考虑其他物品。

三、应用场景1. 背包问题:针对背包问题和其变种,常见的贪心策略有分数背包(与完全和01背包有区别)和完全背包问题;2. 活动安排问题:在一些课程、项目或活动间选择,使得能够安排最多活动;3. 区间选择问题:在一些区间间选择相互不重叠的区间,使得能够选出最大的区间数;4. 集合覆盖问题:在一些集合中选择最少的集合,使得能够覆盖所有元素。

四、优缺点优点:1. 算法简单:贪心算法通常比较简单,易于理解和实现;2. 运算速度快:其时间复杂度一般较低,运算速度很快;3. 可以作为其他算法的优化:贪心策略可以应用于其他算法的优化中。

缺点:1. 不一定能够得到最优解:贪心策略仅考虑当前的局部最优解,对于全局最优解可能产生影响;2. 单一性:贪心算法的结果是唯一的,难以应对变化条件的需要,一旦局部最优解不满足当前的情况,算法就会失去原先的效果;3. 实现困难:对于有些问题,贪心算法并不是很好实现,涉及到更多的问题分析和模型的构造。

算法教学的基本原则与策略

算法教学的基本原则与策略

算法教学的基本原则与策略算法教学是计算机科学中至关重要的一门课程,它培养了学生的计算思维和问题解决能力。

为了更好地进行算法教学,我们需要遵循一些基本的原则和策略。

下面将详细介绍这些原则和策略。

一、基本原则1.清晰和简洁:算法教学的第一条原则是要让学生能够理解算法的定义和过程。

为此,教师需要以简洁明了的方式讲解算法,避免使用过于复杂的术语和概念。

此外,算法的描述和分析应该具备清晰性,让学生理解算法的执行过程和结果。

2.充分的练习和实践:算法教学需要注重学生的实践和练习,让他们能够积极参与到算法的设计和实现中。

通过完成一系列的练习和编程任务,学生能够更好地掌握算法的思想和技巧。

3.强调问题解决的能力:算法教学不仅仅是教授一些具体的算法,更重要的是培养学生解决问题的能力。

因此,在教学中需要加强对问题解决方法和思路的引导,鼓励学生提出自己的想法和解决方案。

4.层次和渐进:算法教学应该按照一定的层次和渐进的方式进行。

首先,应该教授一些基础的算法和数据结构,然后再逐步引入更复杂的算法和问题。

这样有助于学生逐步理解和掌握算法的思想和技巧。

5.实例的引入和分析:在教学中应该使用大量的实例来说明算法的应用和效果。

通过实例的引入,学生能够更好地理解算法的过程和结果,提高对算法的信心和兴趣。

二、基本策略1.问题导向:算法教学应该以问题为导向,通过解决问题来引入和讲解算法。

学生会发现算法是解决问题的有效工具,并能够理解和欣赏算法的应用价值。

2.讲解和演示的结合:在教学过程中,教师应该结合讲解和演示来进行教学。

通过讲解算法的定义和原理,学生能够理解算法的思想和过程;通过演示算法的实现过程,学生能够亲身体验算法的执行和效果。

3.互动和讨论:在教学中应该鼓励学生的互动和讨论,促进思想的交流和碰撞。

通过互动和讨论,学生能够更好地理解和掌握算法的思想和技巧,培养出创新和合作的能力。

4.引导和激发学生的主动性:在教学中,教师应该注重引导和激发学生的主动性。

计算机算法设计五大常用算法的分析及实例

计算机算法设计五大常用算法的分析及实例

计算机算法设计五⼤常⽤算法的分析及实例摘要算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。

也就是说,能够对⼀定规范的输⼊,在有限时间内获得所要求的输出。

如果⼀个算法有缺陷,或不适合于某个问题,执⾏这个算法将不会解决这个问题。

不同的算法可能⽤不同的时间、空间或效率来完成同样的任务。

其中最常见的五中基本算法是递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法。

本⽂通过这种算法的分析以及实例的讲解,让读者对算法有更深刻的认识,同时对这五种算法有更清楚认识关键词:算法,递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法AbstractAlgorithm is the description to the problem solving scheme ,a set of clear instructions to solve the problem and represents the describe the strategy to solve the problem using the method of system mechanism . That is to say, given some confirm import,the Algorithm will find result In a limited time。

If an algorithm is defective or is not suitable for a certain job, it is invalid to execute it. Different algorithms have different need of time or space, and it's efficiency are different.There are most common algorithms: the recursive and divide and conquer、dynamic programming method、greedy algorithm、backtracking、branch and bound method.According to analyze the five algorithms and explain examples, make readers know more about algorithm , and understand the five algorithms more deeply.Keywords: Algorithm, the recursive and divide and conquer, dynamic programming method, greedy algorithm、backtracking, branch and bound method⽬录1. 前⾔ (4)1.1 论⽂背景 (4)2. 算法详解 (5)2.1 算法与程序 (5)2.2 表达算法的抽象机制 (5)2.3 算法复杂性分析 (5)3.五中常⽤算法的详解及实例 (6)3.1 递归与分治策略 (6)3.1.1 递归与分治策略基本思想 (6)3.1.2 实例——棋盘覆盖 (7)3.2 动态规划 (8)3.2.1 动态规划基本思想 (8)3.2.2 动态规划算法的基本步骤 (9)3.2.3 实例——矩阵连乘 (9)3.3 贪⼼算法 (11)3.3.1 贪⼼算法基本思想 (11)3.3.2 贪⼼算法和动态规划的区别 (12)3.3.3 ⽤贪⼼算法解背包问题的基本步骤: (12)3.4 回溯发 (13)3.4.1 回溯法基本思想 (13)3.3.2 回溯发解题基本步骤 (13)3.3.3 实例——0-1背包问题 (14)3.5 分⽀限界法 (15)3.5.1 分⽀限界法思想 (15)3.5.2 实例——装载问题 (16)总结 (18)参考⽂献 (18)1. 前⾔1.1 论⽂背景算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 基本的算法策略
4.1 迭代算法
• 概念 用变量的旧值递推出新值的解决问题的方法
• 适合的范围 数值计算
• 类型 (1)递推法
sn=sn-1+An (2)倒推法
4.1.1 递推法
【例1】兔子繁殖问题
问题描述:一对兔子从出生后第三个月开始,每月生 一对小兔子。小兔子到第三个月又开始生下一代小 兔子。假若兔子只生不死,一月份抱来一对刚出生 的小兔子,问一年中每个月各有多少只兔子。
问题分析:则繁殖过程如下:
一月 二月 三月 四月 五月 六月 ……
1 1 1+1=2 2+1=3 3+2=5 5+3=8 …… 数 学 建 模 : y1=y2=1 , yn=yn-1+yn-2 , n=3 , 4 ,
5,……。
算法1:
main( ) { int i,a=1,b=1;
print(a,b); for(i=1;i<=10;i++)
分治法的基本步骤在每一层递归上都有三个步骤:
1)分解:将原问题分解为若干个规模较小,相互独立,与原 问题形式相同的子问题;
2)解决:若子问题规模较小而容易被解决则直接解,否则再 继续分解为更小的子问题,直到容易解决;
3)合并:将已求解的各个子问题的解,逐步合并为原问题的 解。
说明:
有时问题分解后,不必求解所有的子问题,也就不必作第三 步的操作。比如折半查找,在判别出问题的解在某一个子问题 中后,其它的子问题就不必求解了,问题的解就是最后(最小) 的子问题的解。分治法的这类应用,又称为“减治法”。
分治法的一般的算法设计模式如下:
Divide-and-Conquer(int n)
if(G1<>G2 ) break; } if(i=6) print( F,”*”,A,”=”,E); } }
4.3 分而治之算法
4.3.1 分治算法框架
1.算法设计思想
分治法求解问题的过程是,将整个问题分解成若干个小问题后分 而治之。如果分解得到的子问题相对来说还太大,则可反复使用 分治策略将这些子问题分成更小的同类型子问题,直至产生出方 便求解的子问题,必要时逐步合并这些子问题的解,从而得到问 题的解。
用枚举法解决问题,通常可以从两个方面进行算法设计:
1)找出枚举范围:分析问题所涉及的各种情况。
2)找出约束条件:分析问题的解需要满足的条件,并用逻辑 表达式表示。
【例】解数字迷:
ABCAB
×
A
DDDDDD
算法设计1:按乘法枚举
1)枚举范围为:
A:3——9(A=1,2时积不会得到六位数),B:0——9,
多数问题需要所有子问题的解,并由子问题的解,使用恰 当的方法合并成为整个问题的解,比如合并排序,就是不断将 子问题中已排好序的解合并成较大规模的有序子集。
2.适合用分治法策略的问题 当求解一个输入规模为n且取值又相当大的问题时,用蛮力策略 效率一般得不到保证。若问题能满足以下几个条件,就能用分治法 来提高解决问题的效率。 1) 能将这n个数据分解成k个不同子集合,且得到k个子集合是 可以独立求解的子问题,其中1<k≤n; 2) 分解所得到的子问题与原问题具有相似的结构,便于利用递 归或循环机制; 在求出这些子问题的解之后,就可以推解出原问题的解;
C:0——9 六位数表示为A*10000+B*1000+C*100+A*10+B,
共尝试800次。
2)约束条件为:
每次尝试,先求5位数与A的积,再测试积的各位是否相
同,若相同则找到了问题的解。
测试积的各位是否相同比较简个位,然后整除10,使高位的数字不断变
成个位,并逐一比较。
4.3.2 二分法
不同于现实中对问题(或工作)的分解,可能会考虑问题 (或工作)的重点、难点、承担人员的能力等来进行问题的分 解和分配。在算法设计中每次一个问题分解成的子问题个数一 般是固定的,每个子问题的规模也是平均分配的。当每次都将 问题分解为原问题规模的一半时,称为二分法。二分法是分治 法较常用的分解策略,数据结构课程中的折半查找、归并排序 等算法都是采用此策略实现的。
• 应用
蛮力策略的应用很广,具体表现形式各异,数据结构课程中学 习的:选择排序、冒泡排序、插入排序、顺序查找、朴素的字符 串匹配等,都是蛮力策略具体应用。
4.2.1 枚举法
枚举( enumerate)法(穷举法)是蛮力策略的一种表现形式, 也是一种使用非常普遍的思维方法。它是根据问题中的条件将可能 的情况一一列举出来,逐一尝试从中找出满足问题条件的解。但有 时一一列举出的情况数目很大,如果超过了我们所能忍受的范围, 则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题 可能解的列举数目。
{ c=a+b; print (c); a=b; b=c;
} }
4.1.2 倒推法
所谓倒推法:是对某些特殊问题所采用的违反通常习惯的, 从 后向前推解问题的方法。
【例】猴子吃桃问题 一只小猴子摘了若干桃子,每天吃现有桃的一半多一个, 到第10天时就只有一个桃子了,求原有多少个桃? 数学模型:每天的桃子数为:a10=1, a9=(1+a10)*2, a8=(1+a9) *2,……a10=1, 递推公式为:ai=(1+ai+1)*2 I = 9,8,7,6……1 算法如下 :
main( ) { int i,s; s=1; for (i=9 ;i>=1;i=i-1) s=(s+1)*2 print (s);
}
4.2 蛮力法
• 蛮力法是基于计算机运算速度快这一特性,在解决问题时采 取的一种“懒惰”的策略。这种策略不经过(或者说是经过很少的) 思考,把问题的所有情况或所有过程交给计算机去一一尝试,从 中找出问题的解。
算法1如下: main( ) { int A,B,C,D,E,E1,F,G1,G2,i; for(A=3; A<=9; A++)
for(B=0; B<=9; B++) for(C=0; C<=9; C++)
{ F=A*10000+B*1000+C*100+A*10+B; E=F*A; E1=E; G1=E1 mod 10; for(i=1; i<=5; i++) { G2=G1; E1=E1/10; G1= E1 mod 10;
相关文档
最新文档