算法设计与分析
默默提升实验室
人活着的意义,就是逆着人性做事情。默默实践、默默提升,一个小小实验室而已。
展开
-
打印具有以下规律的方阵(01)
题目描述螺旋阵:任意给定n值,按如下旋转的方式输出方阵: 1 8 7 1 12 11 10 2 9 6 2 13...原创 2018-10-25 09:34:32 · 852 阅读 · 0 评论 -
算法设计与分析 | 分而治之算法 | 金块问题
目录题目描述问题分析代码编写打印结果题目描述老板有一袋金块(共n块,n是2的幂(n≥2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。问题分析对于一般思路:通过一个函数Max进行n-1次比较来找到最重的金块,然后再从余下的n-2个金块中用同样的方法Min函数找到...原创 2019-03-13 20:28:50 · 14803 阅读 · 0 评论 -
(03)从键盘输入一个数,求出这个数的阶乘,即 n!。
题目描述从键盘输入一个数,求出这个数的阶乘,即 n!。算法思想首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。定义变...原创 2018-12-15 21:07:46 · 10617 阅读 · 0 评论 -
时间复杂度
表示时间复杂度的上界,表示时间复杂度的下界,介于两者之间O(f(n)),给出了算法运行时间的上界,也就是最坏情况下的时间复杂度; Ω(f(n)),给出了算法运行时间的下界,也就是最好情况下的时间复杂度; Θ(f(n)),给出了算法运行时间的上界和下界,这里Θ(f(n))是渐近的确界,...原创 2019-03-15 18:26:40 · 684 阅读 · 0 评论 -
动态规划
目录基本思想基本步骤基本要素基本框架基本思想把求解的问题分成许多阶段或多个子问题,然后按顺序求解各个子问题。前一个子问题的解为后一个子问题的求解提供了有用的信息。在求解任何一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解,依次解决各子问题,最后一个子问题就是问题的解。基本步骤(1)划分阶段:按照问题的时间或空间特征,...原创 2019-03-15 18:17:57 · 127 阅读 · 0 评论 -
递归问题 | Hanoi塔
问题描述古代有一个梵塔,塔内有三个基座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,且在移动过程中,3个基座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用C基座做辅助,请打印移动的步骤。如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。代码编写#includ...原创 2019-03-13 21:20:28 · 903 阅读 · 0 评论 -
求三个数的最小公倍数
代码编写//求3个数的最小公倍数#include<stdio.h>int max(int a,int b,int c) { //自定义函数max if(a>b&&a>c) { // 若a的值最大 return a; // 返回a } else if(b>a&&b>c...原创 2018-11-11 17:48:19 · 18993 阅读 · 0 评论 -
递归设计(01)汉诺塔问题
问题描述古代有一个梵塔,塔内有3个基座分别为A,B,C,开始时A基座上有64个盘子,盘子大小不等,大的在下面,小的在上面(如下图所示)。有一个老和尚想把这64个盘子从A基座移动到C基座,但每次只允许移动一个盘子,且在移动过程中,3个基座上的盘子都始终保持大盘在下面,小盘在上。在移动过程中可以利用B基座做辅助。请编程打印出移动方案。算法设计代码编写/******...原创 2018-11-11 17:08:21 · 2259 阅读 · 0 评论 -
求1/1!-1/3!+1/5!-1/7!+……+(-1)^(n+1)/(2n-1)!
题目来源:算法设计与分析(第三版)@吕国英等编著 题目描述求1/1!-1/3!+1/5!-1/7!+……+(-1)^(n+1)/(2n-1)!问题分析题目中,既有累加又有累乘。数学模型 模型一:模型二:代码编写 模型一:#include<stdio.h>int main() { int i,j,n,sign; float ...原创 2018-11-11 16:57:18 · 6225 阅读 · 0 评论 -
任给十进制的正整数,请从高位到低位逐位输出各位数字
递归算法#include<stdio.h>int fun(int num);int main(){ int n; scanf("%d", &n); fun(n); return 0;}int fun(int num){ if (num < 10) { printf("%d\n", ...原创 2018-11-11 16:47:33 · 5692 阅读 · 3 评论 -
循环设计(01)规律图形
题目来源:算法设计与分析(第三版)@吕国英等编著题目:编写算法:打印具有以下规律的图形当n=4 时 输出: 1 5 2 8 6 310 9 7 4问题分析: 算法设计 代码编写:#include<stdio.h>main(){ int i,j,a[100][100],n,k...原创 2018-11-11 16:34:38 · 1124 阅读 · 0 评论 -
贪婪算法 | 可绝对贪婪问题
目录题目描述问题分析算法设计代码编写打印结果题目描述键盘输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。输出应包括所去掉的数字的位置和组成的新的整数(n不超过240位) 。问题分析在位数固定的前提下,让高位的数字尽量小,那么值就较小。总目...原创 2018-11-13 21:16:58 · 2161 阅读 · 0 评论 -
填写运算符
题目描述 任意输入5个数x1,x2,x3,x4,x5,每两个数相邻数之间填上一个运算符。在填入4个运算符“+,-,*,/”后,使得表达式值为一个指定值y(y由键盘输入)。求出所有满足条件的表达式。代码编写#include<stdio.h>int main(){ int j,i[5]; //循环变量,数组i用来表示...原创 2018-10-25 09:38:09 · 1214 阅读 · 0 评论