数据结构与算法
文章平均质量分 51
阿桑-
这个作者很懒,什么都没留下…
展开
-
CSDN之人人code,整数取反
题目描述:要求实现把给定的一个整数取其相反数的功能,举两个例子如下:x = 123, return 321 x = -123, return -321; 解题思路:对int a进行判断,如果a的大小不等于0;则定义一个变量temp等于temp*10+a的最后一位,a = a/10;依次循环。。。代码如下: 我的代码如下:#include using n转载 2014-02-26 11:28:30 · 807 阅读 · 0 评论 -
有25匹马,5条赛道
昨天参加暴风影音的校招笔试,选择题和编程题选择题中的一道题是这样的:有25匹马,5条赛道,一匹马一条赛道,无法为每匹马计时,每一场比赛只能知道5匹马的相对快慢,求决胜出前5名至少需要多少场比赛,题目分析: 题目分析,解体的关键思路体现在前面的比赛可以为后面的马的优先级排序,先分成5组,每组5匹马,5场比赛可以确定每一组的优先级,6场比赛就可以确定5个组之间的排列,可以得到一张原创 2015-10-20 16:32:21 · 2208 阅读 · 0 评论 -
集合的所有子集的算法
转载自:http://blog.csdn.net/yzl20092856/article/details/39995085求集合的所有子集的算法对于任意集合A,元素个数为n(空集n=0),其所有子集的个数为2^n个如集合A={a,b,c},其子集个数为8;对于任意一个元素,在每个子集中,要么存在,要么不存在,对应关系是:a->1或a->0b->1或b->0c->1或转载 2017-09-07 20:52:42 · 14384 阅读 · 1 评论 -
全排列算法的思想
全排列算法题目要求:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 总体的思想是固定前面的某些元素位,比如1,2,3全排列时,先固定1,排后面的2,3,就有(1,2,3),(1,3,2)两种排列。让算法理解简化的一步是。将数组中的所有原创 2016-03-01 22:22:57 · 1698 阅读 · 0 评论 -
卡特兰数列编程实现
/*2-10 标准二维表问题问题为:设n是一个正整数。2*n的标准二维表是由正整数1,2,…2n组成的2*n数组,该数组的每行从左到右递增,每列从上到下递增。把数字从小到大进行排序,用0表示对应的数字在第一排,用1表示对应的数字在第二排,那么含有n个0,n个1的序列,就对应一种方案.比如000111就对应着第一排:1 2 3 第二排:4 5 6010101就对应着第一排:1 3 ...原创 2018-07-01 16:40:43 · 624 阅读 · 0 评论 -
排列算法-递归
递归实现集合中元素的全排列。 R={r1,r2,r3,,,,,rn} 归纳定义如下: n = 1时,Perm(R) = (r1) n > 1时,Perm(R) = (r1)Perm(R-r1) + (r2)Perm(R-r2) +,,,+ (rn)Perm(R-rn)template<class Type>void Perm(Type list[], int...原创 2018-07-03 15:18:27 · 177 阅读 · 0 评论 -
归并排序C++实现
归并排序/*合并[left,mid),[mid,right)两个有序数组*/void merge(int *arry, int left, int mid, int right){ int *temp = new int[right - left]; int t = 0; int i = left; int j = mid; while (i &...原创 2018-07-03 21:32:13 · 5874 阅读 · 2 评论 -
动态规划基本思想
基本要素: (1)最优子结构性质 (2)重叠子问题性质 思想: 动态规划和分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 与分治法不同的是,动态规划法中分解得到的子问题不是互相独立的。若用分治法来解这类子问题,分解得到的子问题数目非常多,最后解决原问题需要耗费指数时间。但是这些子问题有很多是相同的,也就是同一个子问题被计算了很...原创 2018-07-04 11:24:38 · 9749 阅读 · 0 评论 -
跳台阶算法简单分析
题目为: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 分析: N级=(N-1)级的情况+(N-2)级的情况。 因为两种情况都可以选择,所以两种情况下的次数相加。算法1.最简单的递推实现代码为:long long Jump(int n){ if (n == 0) return 0; if (n ==...原创 2018-08-11 12:02:28 · 4900 阅读 · 4 评论 -
牛顿差值多项式
实验题目:Newton插值多项式相关知识:通过n+1个节点的次数不超过n的Newton插值多项式为: x 0 10 20 30 40 50 60 70 80 9...原创 2015-04-10 22:34:42 · 3546 阅读 · 0 评论 -
二叉树的遍历
没想到二叉树的后序遍历可以实现的这么简单,代码参考自:牛客网-重庆森林2.0。 先序遍历的顺序为:根->左->右,我们借助栈的思想,实现先序遍历很方便。//先序遍历代码void preOrder2(BinTree *root) //非递归前序遍历 { stack<BinTree*> s; BinTree *p=root; while...原创 2018-09-12 20:29:53 · 150 阅读 · 0 评论 -
正整数 n 所有可能的和式的组合
正整数 n 所有可能的和式的组合(如; 4=1+1+1+1、 1+1+2、 1+3、 2+1+1、2+2)我的代码:vector<int> v;vector<vector<int>> vv;void fun(int val,int s){ if (val == 0) {原创 2018-10-12 11:40:27 · 2291 阅读 · 0 评论 -
leetcode-sort-colors
题目描述Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the原创 2016-10-31 08:23:48 · 285 阅读 · 0 评论 -
leetcode N-Queens
转载自:http://www.cnblogs.com/TenosDoIt/p/3801621.htmlN-QueensThe n -queens puzzle is the problem of placing n queens on an n × n chessboard such that no two queens attack each other.Given an intege...转载 2017-06-28 10:34:12 · 215 阅读 · 0 评论 -
建立带头结点的双向链表_尾插法
// -------------------------------------------------------//2014--03--14// 建立双向链表// 程序分析:双向链表的节点有两个指针域,一个指向直接前驱,另一个指向直接后继。// 其中第一个节点的前驱指针为NULL ,最后一个节点的直接后继指针为NULL ;// --------------------原创 2014-03-15 08:27:57 · 4656 阅读 · 1 评论 -
不带头结点的单链表的建立
建立该链表利用的是尾插法// 创建一个单链表,没有头结点,#include <iostream>#include <ctime>using namespace std;//------------------------------------------------//**********************************************...原创 2014-03-14 22:31:51 · 2766 阅读 · 0 评论 -
链表操作时头结点的好处
在链表的开始结点前设置头结点的优点是什么?答:头结点是在链表的开始结点之前附加一个结点。它具有两个优点:(1)、由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其它位置上操作一致,无须进行特殊处理;(2)、无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就统一了。转载 2014-03-15 08:05:59 · 5158 阅读 · 0 评论 -
C++建立队列_利用链表
// c++ 实现链表队列// .h 文件// 文件名: Queue.h//-------------------------------------------------#pragma once//-------------------------------------------------#include using namespace std;//-------原创 2014-03-23 18:57:02 · 903 阅读 · 0 评论 -
归并排序-逆序对数
/*程序装载自:http://www.cnblogs.com/XiongHarry/archive/2008/11/06/1327732.html求逆序对数设A[1..n]是一个包含N个非负整数的数组。如果在i〈 j的情况下,有A〉A[j],则(i,j)就称为A中的一个逆序对。例如,数组(3,1,4,5,2)的“逆序对”有,,共4个。使用归并排序可以用O(nlogn)的时间解决转载 2015-04-01 22:27:23 · 772 阅读 · 0 评论 -
算法实现:返回单链表的倒数第pos个节点
//腾讯的面试题 2015-04-14//转载自:http://blog.chinaunix.net/uid-23629988-id-2169046.html?page=2#include #include #include using namespace std;//建立一个链表struct Node{ int data; Node *next;};//函数功能创建原创 2015-04-14 22:59:23 · 847 阅读 · 0 评论 -
组合算法问题
//转载自:http://blog.csdn.net/ywjun0919/article/details/11180685// 和 http://www.2cto.com/kf/201301/181305.html/*题目要求:写一个程序,打印出以下的序列。(a),(b),(c),(d),(e)........(z)(a,b),(a,c),(a,d),(a,e)......(a,z),原创 2015-04-16 16:37:15 · 755 阅读 · 0 评论 -
判断栈的弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。解题思路:利用一个真实的栈结构来进行模拟输入,下面的代码有两层的循环,外层的循环显示入栈,在入栈的同时内层的循环表示是否可以出栈...原创 2015-11-17 11:36:05 · 1163 阅读 · 0 评论 -
Leetcode unique-paths
转载自:http://blog.csdn.net/linhuanmars/article/details/22126357原题链接: http://oj.leetcode.com/problems/unique-paths/ 这道题是比较典型的动态规划的题目。模型简单,但是可以考核动态规划的思想。我们先说说brute force的解法,比较容易想到用递归,到达某一格的路径数量等于它转载 2017-07-11 10:18:40 · 253 阅读 · 0 评论 -
leetcode-search-in-rotated-sorted-array
转载自:http://www.acmerblog.com/leetcode-solution-search-in-rotated-sorted-array-ii-6210.html题目描述Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e.,0 1 2 4 5 6转载 2016-11-03 21:06:10 · 359 阅读 · 0 评论 -
面试准备
二叉查找树:http://www.cnblogs.com/gaochundong/p/binary_search_tree.html编程网站:https://www.nowcoder.com/ta/coding-interviews?query=&amp;amp;amp;asc=true&amp;amp;amp;order=&amp;amp;amp;page=1memcpy函数编写:https://blog.csdn.net/u014492...转载 2018-09-25 09:37:09 · 151 阅读 · 0 评论