
数据结构与算法
文章平均质量分 87
JasonLiu1919
微信公众号《小窗幽记机器学习》。却顾所来径,苍苍横翠微。个人微信号:onepieceand
展开
-
华为OJ:字符逆序和单词翻转
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。 输入参数:inputString:输入的字符串 返回值:输出转换好的逆序字符串需要注意的是,该题和单词翻转之间的区别!单词翻转输入“I am a student.”,则输出“student.a am I”。1:字符逆序原创 2015-08-05 21:09:44 · 2436 阅读 · 0 评论 -
华为OJ:输出单向链表中倒数第k个结点
#include using namespace std;typedef struct node{ int a;//编号 int b;//测量值 struct node *next;}node,*linklist;//为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。//可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。//在遍历时维持两原创 2015-07-21 15:23:05 · 2332 阅读 · 0 评论 -
华为OJ:线性插值
信号测量的结果包括测量编号和测量值。存在信号测量结果丢弃及测量结果重复的情况。 1.测量编号不连续的情况,认为是测量结果丢弃。对应测量结果丢弃的情况,需要进行插值操作以更准确的评估信号。 采用简化的一阶插值方法,由丢失的测量结果两头的测量值算出两者中间的丢失值。 假设第M个测量结果的测量值为A,第N个测量结果的测量值为B。则需要进行(N-M-1)个测量结果的插值处理。进行一阶线性插原创 2015-07-19 18:01:39 · 1884 阅读 · 0 评论 -
华为OJ:从单向链表中删除指定值的节点
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};详细描述:本题为考察链表的插入和删除知识。链表的值不能重复构造过程,例如1 -> 23 -> 25原创 2015-07-12 16:50:09 · 5222 阅读 · 1 评论 -
两个字符串合并、排序和转换
按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符原创 2015-07-11 16:59:46 · 6066 阅读 · 0 评论 -
线性代数中的正则化(regularization)(zz)
正则化(regularization)在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。反问题有两种形式。最普遍的形式是已知系统和输出求输入,另一种系统未知的情况通常也被视为反问题。许多反问题很难被解决,但是其他反问题却很容易得到答案。显然,易于解决的问题不会比很难解决的问题更转载 2012-12-30 13:22:19 · 15391 阅读 · 0 评论 -
傅立叶变换(zz)
一、傅立叶变换的由来关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从网上看到一个关于数字信号处理的电子书籍,是一个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换,虽然是英文转载 2012-12-29 09:23:09 · 1267 阅读 · 0 评论 -
华为上机-在给定字符串中找出单词
//15. 在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,//其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词;//找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),//然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。//输出的单词之间使用一个“空原创 2014-07-20 14:57:22 · 1810 阅读 · 0 评论 -
华为上机--重复字符过滤
题目:请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 示例 输入:“deefd” 输出:“def” 输入:“afafafaf” 输出:“af” 输入:“pppppppp” 输出:“p”原创 2014-07-12 22:00:45 · 928 阅读 · 0 评论 -
华为上机1-选秀打分
#include //#include <>using namespace std; int cal_score(int score[], int judge_type[], int n) { int zhuan_score = 0; int zhuan_num = 0; int da_score = 0; int da_num = 0; for(int i=0;i<n;i原创 2014-07-10 20:59:48 · 827 阅读 · 0 评论 -
笔试系列-1-华为机试第二题
2014年华为机试题目2:华为2014校园招聘的机试题目和2013年的完全一样。题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。要求实现函数:void stringFilter(const char *pInputSt原创 2014-02-21 20:42:55 · 1002 阅读 · 0 评论 -
贪心算法在找钱问题上的使用
背景:对于现实生活中的找零问题,假设有数目不限,面值为20,10,5,1的硬币。 求出找零方案,要求:使用数目最少的硬币。 对于此类问题,贪心算法采取的方式是找钱时,总是选取可供找钱的硬币的最大值。比如,需要找钱数为25时,找钱方式为20+5,而不是10+10+5。实现:#include<stdio.h> void greedy_change_back(int m[],int k,int n)原创 2017-03-16 21:34:51 · 4713 阅读 · 1 评论 -
餐馆就餐问题
问题描述:某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大。输入描述:输入包括m+2行。 第一行两个整数n(1 <= n <= 50000),m(1 <= m <= 50000) 第二行为n个参数a,即每个桌子可容纳的最大人数,以空格分隔,范围均在原创 2017-03-15 21:51:04 · 1278 阅读 · 0 评论 -
编程之美读书笔记1-CPU占用率曲线的绘制
控制#include#include#include#include const double SPLIT = 0.01;const int COUNT = 200;const double PI = 3.14159265;const int INTERVAL =300;int _tmain(int argc,_TCHAR * argv[]){ DWORD原创 2014-07-29 13:39:11 · 847 阅读 · 0 评论 -
数据结构与算法-表达式转为后缀式
例如:Exp = a ´ b + (c - d / e) ´ f其前缀式:+ ´ a b ´ - c / d e f前缀式(包含了括号信息)的运算规则为:连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式;唯一地确定了运算顺序。先找操作数,再找运算符。其后缀式:a b ´ c d e / - f ´ +后缀式运算符在式中出现的顺序恰原创 2014-08-04 20:11:24 · 1462 阅读 · 0 评论 -
STL:优先队列
队列的定义:队列(queue)维护了一组对象,原则是先进先出。priority_queue特别之处在于,允许用户为队列中存储的元素设置优先级。这种队列不是直接将新元素放置在队列尾部,而是放在比它优先级低的元素前面。标准库默认使用优先队列有两种,一种是最大优先队列;一种是最小优先队列;每次取自队列的第一个元素分别是优先级最大和优先级最小的元素。原创 2014-09-06 11:32:28 · 677 阅读 · 0 评论 -
数据结构与算法-最小生成树—普里姆算法
主要介绍最小生成树中的:原创 2014-08-08 13:38:27 · 4106 阅读 · 0 评论 -
华为面试题:用递归的方法判断整数组a[N]是不是升序排列
int is_ascending ( int a [],int length){ if (length ==1) return 1; if (a [ length-2]> a [length -1]) { return 0原创 2014-11-06 11:17:40 · 1127 阅读 · 0 评论 -
洗牌算法
给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里原创 2014-11-06 15:35:41 · 1122 阅读 · 0 评论 -
遗传算法C++例子
遗传算法的具体已在前面的文章进行阐述,在此补充一个例子进行说明。求函数极大值F(X) = X[1]^2 - X[1]*X[2] + X[3]其中0 0 -2 正解为[5,0,2]。txt文本中的内容截图如下:所表示的是各个变量的取值范围。第一列为所取的最小值,第二列为所取的最大值;每一行对应一个变量。代码如下所示:# include #in原创 2015-01-07 17:11:23 · 7954 阅读 · 0 评论 -
遗传算法与C++实现
遗传算法,核心是达尔文优胜劣汰适者生存的进化理论的思想。我们都知道一个种群,通过长时间的繁衍,种群的基因会向着更适应环境的趋势进化,牛B个体的基因被保留,后代越来越多,适应能力低个体的基因被淘汰,后代越来越少。经过几代的繁衍进化,留下来的少数个体,就是相对能力最强的个体了。那么在解决一些问题的时候,我们能不能学习这样的思想,比如先随机创造很多很多的解,然后找一个靠谱的评价体系,去筛原创 2015-01-06 19:47:17 · 62238 阅读 · 12 评论 -
ACM阶乘之和
描述给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No;输入第一行有一个整数0每组测试数据有一个正整数n输出如果符合条件,输出Yes,否则输出No;样例输入2910样例输出YesNo先算出阶乘之和储存到数组!#include "iostream"using na转载 2015-01-08 15:41:49 · 2798 阅读 · 0 评论 -
基于动态规划的矩阵连乘最优方法
问题描述:在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。其标准计算公式为:由该公式知计算C=AB总共需要pqr次的数乘。 为了说明在计算矩阵连乘积时加括号方式对整个计算量的影响,我们来看一个计算3个矩阵{A1,A2,A3}的连乘积的例子。设这3个矩阵的维数分别为10原创 2015-01-12 19:35:54 · 13163 阅读 · 5 评论 -
五大常用算法之一:分治算法(ZZ)
一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题转载 2015-04-06 16:19:43 · 1142 阅读 · 0 评论 -
字典树的使用
本文主要尝试在实践中使用字典树。#include "stdio.h" #include "string.h" #include "stdlib.h" struct dictree { struct dictree *child[26]; bool isWord;//=false; int n;// 统计一组字符串中某前缀出现的次数 di原创 2014-05-25 15:20:28 · 714 阅读 · 0 评论