- 博客(29)
- 资源 (3)
- 收藏
- 关注
原创 找出数组中任何相邻子向量的最大和
问题描述: 输入是一个具有n个浮点数字的向量x,其输出是在输入的任何相邻子向量中找出的最大和。例如,如果输入向量包含下面10个元素:31 -41 59 26 -53 58 97 -93 -23 84那么该程序将返回x[2...6]的总和。或187.当所有数都为正数时,最大和就是总和。当所有数都为负数时,最大总和子向量是空向量,空向量的总和为0。 方法一: 完成
2015-05-31 21:03:52 705
原创 检查所有套接字选项的main函数
代码如下:int main(int argc, char **argv){int fd;socklen_t len;struct sock_opts *ptr;for (ptr = sock_opts, ptr->opt_str != NULL; ptr++){printf("%s:", ptr->opt_str);if (ptr->opt_val_str ==
2015-05-24 17:11:37 743
原创 套接字选项之getsockopt和setsockopt
这两个函数仅用于套接字。#includeint getsockopt(int sockfd,int level,int optname,void* optval,socklen_t *optlen);int setsockopt(int sockfd,int level,int optname,const void *optval,socklent_t optlen);均
2015-05-24 16:40:26 929
原创 链表就地逆置和合并
题目说明:(1)单链表就地逆置(2)合并链表 问题一分析: 逆置后的点链表初始为空,表中的节点不是新生成的,而是从原链表当中一次“删除”,再逐个头插到逆置表中。设逆置链表的初始态为空表,“删除”已知链表中的第一个节点,然后将它“插入”到逆置链表的“表头”,即使得他成为逆置链表中“新”的第一个节点,如此循环,直至原链表为空。假设有如下数据结构:
2015-05-21 22:06:16 952
原创 猜牌问题
题目: 有4张红色的牌和4张蓝色的牌,主持人先拿任意两张,再分别在A,B,C三人额头上贴任意两张牌,A,B,C三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A说不知道,B说不知道,C说不知道,然后A知道了。请问如何推理,A是怎么知道的,如果用程序,又怎么实现呢?推理如下:因为第一次三者都说不知道,则两两相加不可能出现四红或四蓝,则A,B,
2015-05-20 21:54:09 574
原创 求两个数的和等于一个数的所有组合
题目: 输入两个整数n和m,从数列1,2,3.....n中随意取n个数,使其和等于m,要求将其中所有的可能组合列出来。// 递归方法 #include #include using namespace std;listlist1;void find_factor(int sum, int n){// 递归出口 if (n
2015-05-17 21:56:50 1036
原创 opencv之types_c.h
#ifndef __OPENCV_CORE_TYPES_H__#define __OPENCV_CORE_TYPES_H__#ifdef HAVE_IPL# ifndef __IPL_H__# if defined WIN32 || defined _WIN32# include # else# include # e
2015-05-15 21:22:48 2563
原创 将字符串转换为整数并输出
题目: 输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串”345”,则输出整数345最后一个需要考虑的问题是溢出问题,由于输入的数字是以字符串的形式输入,因此有可能输入一个很大的数字转换之后会超过能够表示的最大的整数而溢出。
2015-05-11 22:07:58 1649
原创 求Fibonacci数列的第n项
题目: 定义Fibonacci数列如下:方法一: 递归的方法,代码如下:#includeusing namespace std;int Fibona(int n){int m;if (n == 0)return 0;else if (n == 1 || n == 2)return 1;else{m = Fibon
2015-05-11 17:17:38 962
原创 蚂蚁爬杆
问题:解答:伪代码如下:void CalcTime(double Length,// length of the stickdouble *XPos,//position of an ant,int AntNum, //number of antsdouble Speed, //speed of antsdouble &Min,//retu
2015-05-10 21:27:18 1101 1
原创 点是否在三角形内
题目描述: 如果在一个二维坐标系中,已知三角形三个点的坐标,那么对于坐标系中的任意一点,如何判断该点是否在三角形内(点在三角形边线上也认为在三角形内)? 假设三角形的三个点的坐标为ABC(逆时针顺序),需要判断点D是否在该三角形内。
2015-05-09 19:54:21 1009 2
原创 删除第m个数字
题目:n个数字(0,1,2,.....n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字),当一个数字删除后,从被删除数字的下一个继续删除第m个数。找出这个圆圈中剩下的最后一个数字。
2015-05-08 22:15:38 561
原创 在一个字符串中找到第一个只出现一次的字符
题目:在一个字符串中找到第一个只出现一次的字符。例如: 输入abaccdeff,则输出b思路剖析: 由于题目与字符出现的次数相关,可以统计每个字符在该字符串中出现的次数。要达到这个目的,需要一个数据容器来存放每个字符出现的次数。在这个数据容器中可以根据字符来查找它出现的次数。在常用的数据容器中,哈希表正是这个用途。由于字符是一个长度为8的数据类型,因此总
2015-05-08 17:03:55 2123
原创 二分查找算法
问题: 找出一个有序(字典序)字符串数组arr中值等于字符串v的元素的序号,如果有多个元素满足这个条件,则返回其中序号最大的。 int bisearch(char** arr, int b, int e, char* v){//循环结束有两种情况://若minIndex为偶数则minIndex==maxIndex;//否则就是minIndex==maxIndex-1
2015-05-07 22:16:14 667
原创 重建二叉树
二叉树的结点表示:struct NODE{ NODE* pLeft; NODE* pRight; char chValue;};假设已经有了前序和中序遍历结果,希望通过一个算法重建这颗树。分析://Rebuild.cpp :根据前序及中序结果,重建树的根节点//定义树的长度,为了后序调用实现的简单,直接用宏定义了
2015-05-07 21:16:08 450
原创 分层遍历二叉树
题目:问题一: 给定一颗二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。那么分层遍历如图3-17中的二叉树,正确输出应为:1,2,34,5,67,8问题二: 写另外一个函数,打印二叉树中的某层次的节点(从左到右),其中根节点为第0层,函数原型为int
2015-05-07 20:54:53 773
原创 队列中取最大值操作问题
题目: 假设有这样一个拥有三个操作的队列: 1.EnQueue(v):将v加入队列中 2.DeQueue:使队列中的队首元素删除并返回此元素 3.MaxElement:返回队列中的最大元素请设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能地低。解法一:解法二:
2015-05-06 20:51:17 827
原创 从上到下,从左到右输出二叉树的结点
题目: 输入一颗二叉树,从上到下按层打印树的每个结点,同一层中按照从左往右的顺序打印。输出 8,6,10,5,7,9,11.分析:题目为树的层次遍历.(也即图的广度优先遍历)#include#includeusing namespace std;struct BTreeNode{int m_nValue;//value of nod
2015-05-05 22:16:51 2586
原创 最短摘要的生成
解法一:解法二:代码如下:int nTargetLen = N + 1; //设置目标长度为总长度+1;int pBegin = 0;//初始指针int pEnd = 0;//结束指针int nLen = N;//目标数组的长度为N;int nAbstractBegin = 0;//目标摘要的起始地址int nAbstract
2015-05-05 21:55:03 501
原创 从无头单链表中删除节点
题目描述: 假设有一个没有头指针的单链表,一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。代码如下:void DeleteRandomNode(node* pCurrent){Assert(pCurrent != NULL);node* pNext = pCurrent->next;if (pN
2015-05-05 21:13:57 458
原创 将二叉查找树转换为其镜像
题目: 输入一颗二元查找树,将该数转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入:输出:定义二元查找树的结点为:struct BSTreeNode{int m_nValue; //value of nodeBSTreeNode *m_pLeft; //left ch
2015-05-05 16:57:09 601
原创 有序数组中两个数的和等于一个输入值的函数
题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度为O(N). 如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1,2,4,7,11,15和数字15,由于4+11=15,因此输出4和11.
2015-05-05 11:16:48 1034
原创 求单链表倒数第k个结点
题目: 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。分析: 设置两个指针p1,p2。首先p1和p2都指向head。然后p2向前走k步,这样p1和p2之间就间隔k个节点,然后p1和p2同....#include#include#includeusing namespace std;struc
2015-05-05 10:45:43 582
原创 求n个数的和
题目: 求1+2+3+4+....n(要求不能使用乘除法,for,while,if,else,switch ,case等关键字,以及条件判断语句(A?B:C).解法一: 循环只是让相同的代码执行n遍而已,我们完全可以不用for和while达到这个效果,比如定义一个类,我们new一含有n个这种类型元素的数组,那么该类的构造函数将确定会被调用n次,我们可以将需要执行
2015-05-05 09:03:41 1807
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人