算法设计课程报告(C++实现贪心算法)

声明:本报告比较简单,仅供参考哦!!

报告内容(主要包括四个方面的内容):

1、算法设计简介;

2、可以自行选择几种感兴趣的算法进行简介和分析;也可以针对以下给出的算法设计题,任选一题,完成编码任务,给出运行结果;

3、学习算法的心得体会;

4、参考文献

最小正整数问题

问题描述:键盘输入一个高精度的正整数 n(n<10位 ) , 去掉任意 s 个数字后剩下的数字按原左右次序组成一个新的正整数,寻求一种方案,使得新的正整数最小。

问题分析

1) 贪心法求解:删 k 个数符的全局最优解,包含了删除 1个数符的子问题的最优解。

2) 以字符串形式输入 s ,使用尽可能逼近目标的贪心法来逐一删去其中的 k 个数符, 每一步总是选择一个能使剩下的数最小的数符删去。


 

 

摘要:算法是解决特定问题的描述,在计算机领域当中,算法显得尤为重要。本文就算法的定义、特征以及发展历程进行描述,并列举了常见的算法思想。然后利用贪心算法来解决实际问题,最后谈谈自己学习贪心算法心得体会。

关键词:算法定义;算法特征;算法发展历程;贪心算法;心得体会

 

目录

1 算法设计简介

1.1 算法的定义

1.2 算法的特征

1.3 算法的发展流程

1.4 常见的算法

1.4.1 递归法

1.4.2 枚举法

1.4.3 迭代法

2 贪心算法

2.1 贪心算法简介

2.2 贪心算法的基本要素

2.3 贪心算法的问题描述

2.4 编码实现

2.5 运行结果

3 学习心得体会

参考文献


 

1 算法设计简介

1.1 算法的定义

算法是解决特定问题求解决步骤的描述,再计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做T(n)=Ο(f(n))。而算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

另外,算法的正确性、可读性以及健壮性也是判定算法优劣的重要标准。

1.2 算法的特征

算法的特征可分为输入、输出、有穷性、确定性以及可行性。

  1. 输入:算法具有零个或多个输入
  2. 输出:算法至少有一个或多个输出
  3. 有穷性:指算法再执行有限的步骤之后,自动结束而不会出现无心循环,并且每一个步骤再可接受的时间内完成
  4. 确定性:算法的每一个步骤都具有确定的意义,不会出现二义性
  5. 可行性:算法的每一步都必须是可行的,也就是说,每一步都能通过执行有限次数完成

 

1.3 算法的发展流程

算法思想源远流长,中国古代数学中就蕴涵了丰富的算法思想。随着现代信息技术飞速发展,算法在科学技术、社会发展中发挥着越来越大的作用,并且日益融入社会生活的许多方面,算法思想已成为现代人应具备的一种数学素养。希望通过本专题内容的学习,理解算法思想的特点,了解中学数学对算法教学的要求。

“算法”的英文名称Algorithm 来自于9世纪波斯数学家al-Khwarizmi,因为al-Khwarizmi在数学上提出了算法这个概念。“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。欧几里得算法被人们认为是史上第一个算法。 第一次编写程序是Ada Byron于1842年为巴贝奇分析机编写求解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一位程序员。因为查尔斯·巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个算法未能在巴贝奇分析机上执行。 因为"well-defined procedure"缺少数学上精确的定义,19世纪和20世纪早期的数学家、逻辑学家在定义算法上出现了困难。20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要作用。

1.4 常见的算法

 常见的算法有递推法、递归法、枚举法,贪心算法、回溯法以及迭代法等。下面简单介绍几个常见的算法:递归法、枚举法以及迭代法。本报告选取的题目是关于贪心算法的,下面会具体介绍。

1.4.1 递归法

程序调用自身的编程技巧称为递归(recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

1.4.2 枚举法

在进行归纳

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硬核的无脸man~

你的鼓励是我创作的最大功力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值