趣味算法一棋盘的麦子

简介: 趣味算法一棋盘的麦子

1.《趣味算法》原文章节内容_一棋盘的麦子

👍原文章节:

如果说数学是皇冠上的一颗明珠,那么算法就是这颗明珠上的光芒,算法让这颗明珠更加熠熠生辉,为科技

进步和社会发展照亮了前进的路。数学是美学,算法是艺术。 走进算法的人,才能体会它的无穷魅力。

多年来,我有一个梦想,希望每-位提到算法的人,不再立即紧皱眉头,脑海里闪现枯燥的公式、冗长的代

码;我希望每一位阅读和使用算法的人,体会到算法之美,就像躺在法国普罗旺斯小镇的长椅上,呷一口红

酒,闭上眼睛,体会舌尖上的美味,感受鼻腔中满溢的薰衣草的芳香…

🤎以上这一段内容很棒

很多人提到算法会感觉很深奥,算法本身就具有一定的复杂性。也许算法这个名词听上去很抽象,让人联想不到任何具体的物体。也许你会觉得算法与自己的生活并无太多关系,它只不过存在于那些闲得无聊的数学家或计算机专业人士的脑海中.,但这本《趣味算法》很有趣书哈中所有的示例都与生活息息相关,淋漓尽致地展现了算法解决问题的本质,让你爱上算法,乐在其中。

👍原文例子:

有一个古老的传说,一位国王的女儿不幸落水,水中有很多鳄鱼, 国王情急之下下令:“谁能把公主救上
来,就把女儿嫁给他。"很多 人纷纷退让,一个勇敢的小伙子挺身而出,冒着生命危险把公主救了上来,国王
一看是个穷小子,想要反悔,说:“除了女儿,你要什么都可以。”小伙子说:“好吧,我只要一棋盘的麦子。
您在第1个格子里放1粒麦子,在第2个格子里放2粒,在第3个格子里放4粒,在第4个格子里放8粒,以此类
推,每一个格子里麦子的粒数都是前一格子里麦子粒数的两倍。把这64个格子放满了就行,我就要这么多。
国王听后哈哈大笑,觉得小伙子的要求很容易满足,满口答应。结果发现,把全国的麦子都拿来,也填不完
这64个格.....国王无奈,只好把女儿嫁给了这个小伙子。

原文解析:

棋盘上的64个格子究竟需要放多少粒麦子?

注意:宕机就是死机,指计算机无法正常工作,包括一切原因导致的死机。计算机主机出现意外故障而死机,-些服务器(如数据库服务器)死锁,服务器的某些服务停止运行等,都可以称为宕机。

常见的算法时间复杂度有以下几类。

(1)常数阶。

常数阶算法的运行次数是一个常数 ,如5、20、 100。 常数阶算法的时间复杂度通常用0(1)表示。

(2)多项式阶。

很多算法的时间复杂度是多项式,通常用O(n)、O(n2 ^22)、 O(n3 ^33)等表示。

(3)指数阶。

指数阶算法的运行效率极差, 程序员往往像躲“恶魔”一样避开这种算法。指数阶算法的时间复杂度通常

用0(2n ^nn)、O(n!)、 O(nn ^nn)等表示。

(4 )对数阶。

对数阶算法的运行效率较高,通常用O(logn)、O(nlogn)等表示。

指数阶增量随着x的增加而急剧增加,而对数阶增长缓慢。它们之间的关系如下:

0(1)< O(logn)< O(n)< O(nlogn) < O(n2 ^22)< O(n3 ^33)< 0(2n ^nn) < O(n!)< O(nn ^nn)

在设计算法时,我们要注意算法复杂度增量的问题,尽量避免爆炸级增量。

2.什么是算法

算法就是计算的办法或法则。这里的计算指的当然不只是加、减、乘、除等算术运算,而是广义的做任何事情的计算,而办法和法则意味着使用它就可以解决需要的问题。

由上面提到的定义可推知,算法作为解决问题的方法,它必须具备以下特点:

●确定性,即无歧义,能让人照着执行。

●可行性,算法中的运算都是基本的,理论上能够由人用纸和笔完成。

●有限性,在有限输入下,算法必须能在有限步骤内实现有限输出。

此外,算法必须有输出、计算的结果,通常还有至少-一个输入量。这是因为算法用以解

决的问题的描述均包括输入和输出。例如,排序问题可以描述如下:

此外,算法必须有输出、计算的结果,通常还有至少-一个输入量。这是因为算法用以解

决的问题的描述均包括输入和输出。例如,排序问题可以描述如下:

输入:

数列: a1,a2,…an

输出:

排列: a’1,a’2,…a’n, 其中 a’1≤a’2≤…≤a’n

举例:

输入序列:824936

输出序列:234689

3.算法的表示

由于算法由一系列步骤组成,那么任何一个步骤序列从广义上看,都可以当做是一个算法。例如,下面的步骤就可以看做是一个算法:

1)起床

2)吃早点

3)上早自习

4)上课

5)吃午饭

6)上课

7)吃晚饭

8)上晚自习

9)睡觉

这是用自然语言表示的一个学生每天运行的通用算法。下面是一个将末端递归转换为循

环的算法,除了自然语言,我们也可用计算机语言(即程序设计语言)来表示算法。实际上,由于

计算机程序给出的是-一个-一个步骤的执行序列,因此计算机程序都是算法,或者说都是算法

的-种表示。例如,下面的计算机程序片段就表示的是一个计算阶乘的算法:

int factorial (int n)
{
if(n==0) return 1;
else return n* factorial(n-1) ;
}
相关文章
|
算法 Java
【算法篇】/*一篇博客带你详细了解马踏棋盘问题*/(java语言实现)
【算法篇】/*一篇博客带你详细了解马踏棋盘问题*/(java语言实现)
139 0
【算法篇】/*一篇博客带你详细了解马踏棋盘问题*/(java语言实现)
|
算法
算法学习之路|棋盘问题(博弈)
小明和小红在玩一种棋盘游戏,棋盘的尺寸为n个方格*m个方格。一开始在棋盘的右上角(1,m)放一枚硬币,每次一个人可以将硬币向左、下或左下的方格移动。
2136 0
|
存储 算法
算法题每日一练---第2天:棋盘放麦子
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4个棋盘格放 8 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格。
244 0
算法题每日一练---第2天:棋盘放麦子
|
23天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。
|
23天前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
|
1月前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
24天前
|
资源调度 算法
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真
本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。
|
25天前
|
算法
基于SIR模型的疫情发展趋势预测算法matlab仿真
该程序基于SIR模型预测疫情发展趋势,通过MATLAB 2022a版实现病例增长拟合分析,比较疫情防控力度。使用SIR微分方程模型拟合疫情发展过程,优化参数并求解微分方程组以预测易感者(S)、感染者(I)和移除者(R)的数量变化。![]该模型将总人群分为S、I、R三部分,通过解析或数值求解微分方程组预测疫情趋势。
|
25天前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。