算法
未读
数据结构与算法解析习题2.19
数据结构与算法解析习题2.19:寻找主要元素 Majority Element 题干:大小为N的数组,其主元素是一个出现超过N/2的元素。 首先找出主元素的一个候选元,第二步确认该候选元是否为主元素。为找出数组A中的候选元,先构造一个数组B,比较A1和A2,如果相等,则放入到数组B中,然后比较A3和
算法
未读
数据结构与算法解析习题2.16
数据结构与算法解析习题2.16:不用递归,写出快速求幂的程序 用数组储存,x的1,2,4,8log2(n)次方,其实就是存x的2的数组index次方,储存下来。 然后把n转成2进制,转成2进制后,为1的位数,就是数组的index值,相应的元素,因为是求幂,所以这几个元素相乘。 #include <s
算法
未读
数据结构与算法解析习题2.14
数据结构与算法解析习题2.14:找出所有素数 这个主要用一个n+1(具体要不要+1根据后面给数组中元素赋值决定的,都可以)数组来记录素数的位置,比如7是素数,那么数组中index为7的元素就是1。 先把所有元素都置为1,然后在数组中非素数的index的元素,置为0,这样数组中为1的index,就是所
算法
未读
数据结构与算法解析习题2.13
数据结构与算法解析习题2.13:编写一个程序来确定正整数N是否是素数。 先判断是不是1,如果是1直接不是素数。 再判断能不能被2整除,最后判断能不能被小于n的开方整除,也就是说,判断n能否被2~n的开方整除。 如果都不能,就是素数。
int isPrime(unsigned int n) {
算法
未读
数据结构与算法解析习题2.12
数据结构与算法解析习题2.12:最小子序列和,最小正序列和,最大子序列乘积 书上的最大子序列和还有最小子序列和,最小正序列和,最大子序列乘积,这四个基本上是最常问的题了。 这几个绕来绕去容易把人搞蒙,算法有相似但地方但是细微的差别导致结果不同,再此记录一下。
#include <stdio.h>
算法
未读
数据结构与算法解析习题2.11:二分查找
数据结构与算法解析习题2.11:二分查找 在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,
算法
未读
数据结构与算法解析习题2.10:霍纳法则(Horner's rule)
数据结构与算法解析习题2.10:霍纳法则(Horner's rule) 霍纳法则:求多项式值的一个快速算法,后发现算法程序和数字处理都远不及五百多年前的秦九韶有条理,遂现称秦九韶算法。 秦九韶算法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法——正负开方术。它也可以配合牛顿法用来求解一
算法
未读
数据结构与算法解析习题2.7
数据结构与算法解析习题2.7:前N个自然数的一个随机置换 问题描述:假设需要生成前N个自然数的一个随机置换。例如,{4,3,1,5,2} 和 {3,1,4,2,5} 就是合法的置换,但 {5,4,1,2,1} 却不是,因为数1出现了两次而数 3 缺没有。这个程序常常用于模拟一些算法。我们假设存在一个
算法
未读
数据结构与算法解析习题1.3
数据结构与算法解析习题1.3:只是用处理 I/O 的 printDigit 函数,编写一个过程以输出任意实数(可以是负的) 整体思路就是先拿到小数点前面的数字一位一位打印了,如果小数点后有值就打印一个小数点,接着打印小数点后面的数字。 这里有一个注意点就是RoundUp函数,因为double类型33
算法
未读
数据结构与算法解析习题1.2
数据结构与算法解析习题1.2:编写一个程序求解字谜游戏问题。 此题最简单直接解法就是暴力遍历,从矩阵中每个字符开始遍历,2-5的字母长度,8个方向,每一种组合都匹配一遍dict中的每个字符串,如果匹配成功,就返回。。
#include <stdlib.h>
#include <stdio.h>
#