趣味算法一棋盘的麦子

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

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语言实现)
153 0
【算法篇】/*一篇博客带你详细了解马踏棋盘问题*/(java语言实现)
|
算法
算法学习之路|棋盘问题(博弈)
小明和小红在玩一种棋盘游戏,棋盘的尺寸为n个方格*m个方格。一开始在棋盘的右上角(1,m)放一枚硬币,每次一个人可以将硬币向左、下或左下的方格移动。
2154 0
|
存储 算法
算法题每日一练---第2天:棋盘放麦子
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4个棋盘格放 8 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格。
262 0
算法题每日一练---第2天:棋盘放麦子
|
2天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
105 80
|
21天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
27天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
7天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
15天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
23天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
100 15