当前位置:首页 > 算法 > 正文内容

算法初步

chanra1n5年前 (2019-10-25)算法5501

假设我让你计算1+2+3+...+5000等于多少,有两种常见的方法:

    1、按部就班累加

    2、使用公式,(首项+末项)*项数/2

假设你使用第一种方法从头到尾不出错的计算,可能也需要几个小时才能计算出来,但是如果你使用公式可能不到一分钟就得出了正确答案。

这就是我要说的算法,走最短的路,才能最快到底终点。


算法有5个特性:

1、需要足够的情报,就像上面的(首项+末项)*项数/2 这个公式一样,你需要知道首项、末项、项数才能正确的计算(需要足够的情报也可称为“输入项”)

2、有穷,既你的算法必须每个步骤都有有限的运行时间,不能无限地运行下去。

3、确定,使用每个不同的情报运行的算法的结果都不一样,但每个情报一定对应一个固定的结果。就像1的平方能也只能为1      2的平方能也只能为4

4、可行,算法一定要是可行的。

5、输出,算法的目的就是要得出结果,没有输出就不叫算法。


在本网站的算法教程或实例中,为了使得受用面更广,我们尽量采用C语言或者伪代码来表达,尽量减少C++和Java的比重。

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:http://myfpga.cn/index.php/post/32.html

分享给朋友:

“算法初步” 的相关文章

Hanoi Tower问题的简单实现

Hanoi Tower问题的简单实现

设A,B,C是3个塔座。开始时,在塔座A上有一叠共n个圆盘,这些圆盘自上而下,由小到大地叠在一起。各圆盘从小到大编号为1,2,…,n,现要求将塔座A上的这一叠圆盘移到塔座C上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:(1)每次只能移动1个圆盘;(2)任何时刻都不允许将较大的圆盘压在较小的...

C语言判断素数

C语言判断素数

素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。思路:设m为要判断的数,m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了。如果 m 不能被 2 ~  间任一整数整除,m 必定是素数。例如判别 17...

图的应用

图的应用

(1)创建无向图的邻接矩阵存储结构(2)输出无向图的邻接矩阵表示(3)输入任意两个结点,判断是否有边存在(4)输入任意一个结点,求顶点的度(5)根据邻接矩阵求该无向图中边的数目(6)实现图的深度优先遍历(7)实现图的广度优先遍历#include<stdio.h> #include<...

常见算法的C语言实现(带题目、分析和答案) 穷举 递归 迭代 递推 分治 回溯 动态规划 贪心

常见算法的C语言实现(带题目、分析和答案) 穷举 递归 迭代 递推 分治 回溯 动态规划 贪心

1.1   基本思想1.1.1  穷举穷举(又称枚举)算法的基本思想是从所有可能的情况中搜索正确的答案。a)      题一查找数组中的两个元素,它们的和等于给定的目标值。给定一个包含 n 个整数的数组和一个目标值,找出...

(LeetCode刷题)1. 两数之和

(LeetCode刷题)1. 两数之和

题目解答一:/**  * Note: The returned array must be malloced, assume caller calls free(). &nbs...

(LeetCode刷题)2. 两数相加

(LeetCode刷题)2. 两数相加

题目解答一:简单实现思路:先遍历完两个链表,把各自的数字存入两个数组,然后对应位置的数相加,若结果大于10就进位到更高位的数。/**  * Definition for singly-linked list->  * s...