Golang Channel用法简编 Go这门语言也许你还不甚了解,甚至是完全不知道,这也有情可原,毕竟Go在TIOBE编程语言排行榜上位列30开外。但近期使用Golang 实现的一杀手级应用Docker你却不该不知道。docker目前火得是一塌糊涂啊。你去国内外各大技术站点用眼轻瞥一下,如 果没有涉及到“docker”字样新闻的站点建 议你以后就不要再去访问了^_^。Docker是啥、怎么用以及基础实践可以参加国内一位仁兄的经验
go 数组和数组切片比较 一、数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列。(1)数组的创建。数组有3种创建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下:复制代码 代码如下:func test5() { var
C++11新特性:Lambda函数(匿名函数) C++11终于知道要在语言中加入匿名函数了。匿名函数在很多时候可以为编码提供便利,这在下文会提到。很多语言中的匿名函数,如C++,都是用Lambda表达式实现的。Lambda表达式又称为lambda函数。我在下文中称之为Lambda函数。为了明白Lambda函数的用处,请务必先搞明白C++中的自动类型推断:http://blog.csdn.net/srzhz/article/details/7
Golang 工程自管理 有用过VS或者Eclipse的同学一定对左边一列(也可能放右边或下边或者隐藏起来)工程目录记忆尤新。 尤其是有一大堆依赖包、库的时候,目录结构更是复杂。其实这都不是大问题。 熟悉自己工程的自然很适应这种结构。但是当大家去看一些C/CPP工程的时候,其目录结构各自不同。 虽然有一些大家都懂的“src/bin/lib”这些目录。但每个工程之间还是各自不同的。 这样在接触他人项目的时候不免会折腾一番。而
Linux命令之rz - 批量上传文件,简单易用 用途说明 rz命令可以批量上传文件,当然也可上传单个文件啦。使用的协议是古老的ZMODEM协议,虽然协议古老,但毫不影响的简单易用的特性。一般情 况我们要上传文件到Linux系统,要么使用ftp(还得架设ftp服务端),要么使用sftp,上传一个文件要敲不少命令。而这里介绍的rz命令,只需 要简单的在命令行上敲一下 rz -be 命令,在SecureCRT下就会弹出文件选择框让你选择需要上传
lua 1: 字符串转化为数字类型, tonumber 数字类型转化为字符串, tostring .. 为字符串连接运算符 print (0 .. 1) --> 01 print (10 .. "" == "10") 等价于 print (tostirng(10) == "10") 2: C 语言中的三元运算符 a?b:c 在 Lua 中可以这样实现: (a and
pthread_detach 详解 pthread_detach 创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid) 但是调用pthread_join
pthread_create后没有detach导致内存持续增长 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长昨天解决了一个隐蔽的内存泄漏问题,原因是pthread_create后的僵死线程没有释放导致的内存持续增长。现象是这样的:短时间内程序运行正常,但跑了12小时左右,用top查看其内存占用居然高达2G,于是马上意识到有内存泄漏。最先想到的是malloc/free、new/delete
WEB客户与同时链接 client.cpp 文件#include "unpthread.h"#define MAXFILES 20#define SERV "80"struct file{ char *f_name ; char *f_host ; int f_fd ; int f_flags ; pthread_t f_tid ; }file[MAXFILES];#define F
如何创建makefile 目的: 基本掌握了 make的用法,能在Linux系统上编程。环境: Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备: 准备三个文件:file1.c, file2.c, file2.h file1.c: #include
TCP流量控制和拥塞控制 . TCP/ip的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwn
TCP快速重传与快速恢复原理分析 TCP快速重传与快速恢复原理分析分类: Linux TCP/IP 2012-02-03 18:07 2913人阅读 评论(2)收藏 举报tcp算法网络lessstructurenetwork超时重传是TCP协议保证数据可靠性的一个重要机制,其原理是在发送一个数据以后就开启一个计时器,在一定时间内如果没有得到发送数据报的ACK报文,那么就重新发
socket connect 阻塞与非阻塞 . 在C/S模式中,有时候我们需要连接服务器去下载一些更新,所以在客户端启动时,客户端自动连接服务器下载更新,如果客户端与服务器之间网络连接不通,则客户端不用一直等待连接,而是在一定时间内(可以设为若干秒)自动判定网络连接出错,从而不再请求更新~~ socket函数生成socket结构体时,默认生成的socket是阻塞的~如果我们使用connect去连接服务器,而这时网络出现故障,则
套接字的属性 .(套接字默认为阻塞的) 以前我总是将是否处于阻塞模式和是否可以进行异步IO操作混淆起来。以前,我认为可以进行异步IO操作的套接字必然不是处于阻塞模式;处于阻塞模式的套接字无法进行异步IO操作。最新比较正规地学习win socket开发,终于分清这两个概念。 其实,是否处于阻塞模式、是否可以进行异步IO操作是一个套接字上两个不相关的属性。 首先,所有的winsock函数可以分成阻塞函数和非阻塞函数。
fcntl函数说明 fcntl函数说明2011-07-25 23:43 4410人阅读 评论(0)收藏 举报终端struct测试filelinuxcmd (1)fcntl函数说明前面的这5个基本函数实现了文件的打开、读写等基本操作,这一节将讨论的是,在文 件已经共享的情况下如何操作,也就是当多个用户共同使用、操作一个文件的情况,这时,Linux 通常采用
基数排序 int maxbit(int data[],int n) //辅助函数,求数据的最大位数{ int d = 1; //保存最大的位数 int p =10; for(int i = 0;i < n; ++i) { while(data[i] >= p) { p *= 10; ++d; } } return d;}void radi
计数排序 #include using namespace std ;#define N 10 #define inf -100000000void count_sort(int a[] , int b[] , int k ){ int i , c[9]; for( i = 0 ; i <= k ; i ++) c[i] = 0 ; for( i = 0 ; i < N
#error # ifndef的作用 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一个#if……#else
嵌入式面试题 预处理器preprocessor:1.用预处理指令声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL这里考查的知识:1)#define语法的基本知识,比如不能以分号结束2)懂得预处理器将为我们计算常数表达式的值,因此,直接写出你是任何计算一年宗有多少秒而不是计算出实际的值,是更清晰而
怎么将一个十六进制数转变成十进制数 在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:view plaincopy to clipboardprint?char *ptr="123"; int n=0; n=a
string的四个默认函数 编写类String的构造函数、析构函数和赋值函数类String的原型为:class String{ public: String(const char *str = NULL); // 普通构造函数 String(const String &other); // 拷贝构造函数 ~
SQL数据库基本知识 SQL数据库基本知识 SQL数据库是关系数据库。 “事务”处理用户对数据库表格的修改和数据的操作,一次性完成的一组针对表的操作,要么全部成功,要么全部失败。日志是记录关系数库修改情况的笔记。关系数据库一般都是按照“先写日志”的方法来进行事务操作。 SQL语言全称结构化查询语言,功能包括了查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Con
SQL Server数据库基础知识归纳总结 SQL Server数据库基础知识归纳总结(2012-09-12 21:27:41)转载▼标签:sqlserverit分类: SQL1、数据库的“特点”:数据共享、数据完整性、数据独立性高、2、SQL的四个“系统数据库”:master、model、msdb、tempdb简称为“三M一T”;【master
函数和存储过程的区别 函数和存储过程的区别本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现
线程同步的方法 用什么关键字修饰同步方法 ?用synchronized关键字修饰同步方法 同步有几种实现方法,都是什么?分别是synchronized,wait与notifywait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处
k路归并 - 败者树实现 外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。 多路归并排序算法在常见数据结构书中都有涉及。从2路到多路(k路),增
虚析构函数 虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包
C++中explicit关键字的作用 C++中explicit关键字的作用explicit用来防止由构造函数定义的隐式转换。 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如: class things{ public: things(const std::string&name =""):
c++中的四种类型转换的区别 c++中的四种类型转换的区别 类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION; 但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换 成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生
c/c++ 的内存机制 进 程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。一、Linux进程的五个段下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么
STL中map、set的数据结构及底层实现 STL中map、set的数据结构及底层实现摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STL map等关联容器底层数据结构的朋友来说,有一定的参考价值。STL map和
strcpy函数的实现 大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopyprint?char *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = ds
new 和delete的实现 通过了解发现,原来在new的内部实现中只涉及内存的分配,也就是只考虑malloc的使用,而关于调用构造函数的部分则是交由编译器处理,所以这里看不到调用构造函数的代码。 由malloc分配内存空间,然后判断是否分配,并发出bad_alloc的异常消息./*如果分配成功,返回指向内存的指针,否则。返回NULL,并抛出bad_alloc异常*/void *operator new(int s
引起进程调度的原因 引起进程调度的原因(2008-11-26 22:27)引起进程调度的原因有以下几类, (1)正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费处理机资源。 (2)执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态。 (3)执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程队列。 (4)执行中进程提出I/O请求后被阻塞
孤儿进程和僵尸进程 一、定义:什么是孤儿进程和僵尸进程 僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。注: 僵尸进程将会导致资源浪费,而孤儿则不会。
为虚函数,什么情况下需要将析构函数定义为虚函数? 为虚函数,什么情况下需要将析构函数定义为虚函数?首先要明确:1.每个析构函数(不加 virtual) 只负责清除自己的成员。2.可能有基类指针,指向的确是派生类成员的情况。(这是很正常的), 那么当析构一个指向派生类成员的基类指针时,程序就不知道怎么办了。 所以要保证运行适当的析构函数,基类中的析构函数必须为虚析构。 基类指针可以指向派生
构造函数为什么不能为虚函数 1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数
稳定排序和不稳定排序 稳定排序和不稳定排序 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定
/*希尔排序算法*/ /*希尔排序算法*/void ShellInsert( Sqlist &L , int dk ) //实现插入操作{ /*L为链表,dk为递增序列*/ for( i = dk + 1 ; i <= L.length() ; i ++ ) if(LT(L.r[i].key , L.r[i-dk]).key){ L.r[0] = L.r[i] ; for( j =
/*深度优先建立深林,孩子兄弟法*/ /*深度优先建立深林,孩子兄弟法*/void DFSForest(Graph G , Tree &T){ T = NULL ; memset(vi , 0 , sizeof(vi)); for( v = 0 ; v < G.vexnum ; v ++) if(!vi[v]){ p = (Tree)malloc(sizeof(node)); *p = {
大端和小端(Big endian and Little endian) 一、大端和小端的问题 大端和小端(Big endian and Little endian)一、大端和小端的问题对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)。例如,假设从内存地址
冒泡排序 void QP(int A[],int n) //优化的冒泡排序 { int count=0,t,flag; for(int i=0;i<n-1&&flag;i++) { flag=0; for(int j=0;j<n-i;j++) { if(A[j+1]<A[j])
希尔排序(shell) 思路:希尔(Shell)排序的基本思想是:先取一个小于n的整数d1作为第一个增量把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取得第二个增量d2重复上述的分组和排序,直至所取的增量di=1,即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种 分组插入方法。 一般取d1=n/2,di+1=di/2。如果结果为偶数,则加
任一给4个正整数,求出它的所有加和的总数。并按相应的格式打印出来 任一给4个正整数,求出它的所有加和的总数。并按相应的格式打印出来 如:1,2,3,4 共有加和数10种。 结果打印如下: 和为1有1种 1=1; 和为2有1种 2=2; ... 和为6有2种 6=1+2+3; 6=2+4; ... 和为10有1种 10=1+2+3+4; #include#includeusing nam
stl中的vector,list,deque,map,set的区别 stl中的vector,list,deque,map,set的区别 2012-11-13 21:27:27| 分类: 编程技术|字号 订阅在STL中基本容器有: string、vector、list、deque、set、mapset 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问set:集合, 用来判断某一个元素是不
轮询调度算法(Round-Robin Scheduling) 轮询调度算法(Round-Robin Scheduling) 2010-06-23 15:10:28| 分类: 默认分类|字号 订阅毫无疑问,随着互联网、移动网络接入成本的降低,互联网正在日益深入地走入我们的生活,越来越成为人们获取信息的高效平台,ICP行业也顺势呈现出强劲的成长趋势,成为互联网迅猛发展形势下最大的受益者,也直接促成了从web1.0到web2.0
静态链接与动态链接的区别 静态链接与动态链接的区别动态链接库、静态库、import库区别动态链接库(Dynamic Linked Library):Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传
题目1507:不用加减乘除做加法 题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入:输入可能包含多个测试样例。对于每个测试案例,输入为两个整数m和n(1输出:对应每个测试案例,输出m+n的值。样例输入:3 47 9样例输出:716 #includeus
题目1509:树中两个结点的最低公共祖先 题目描述:给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为一个数n(0其中每个测试样例包括两行,第一行为一个二叉树的先序遍历序列,其中左右子树若为空则用0代替,其中二叉树的结点个数node_num第二行为树中的两个结点的值m1与m2(0输出:对应每个
题目1508:把字符串转换成整数 题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1输出:对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数。若输入为一个非法的字符串,则输出“My God”。
题目1506:求1+2+3+...+n 题目描述:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。输入:输入可能包含多个测试样例。对于每个测试案例,输入为一个整数n(1输出:对应每个测试案例,输出1+2+3+…+n的值。样例输入:35
题目1356:孩子们的游戏(圆圈中最后剩下的数) 题目描述:每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为JOBDU的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为1的小朋友开始报数。每次喊到m的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续1...m报数....这
题目1504:把数组排成最小的数 题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行为一个整数m (1输入的第二行包括m个正整数,其中每个正整数不超过10000000。输出
题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 题目描述:亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求
题目1371:最小的K个数 题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入:每个测试案例包括2行:第一行为2个整数n,k(1第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。输出:对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。样例输入:8 4
题目1369:字符串的排列 题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测试案例包括1行。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。输出:对应每组数据,按字典序输出所有排列。样例输入:abcBCA
题目1367:二叉搜索树的后序遍历序列 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。输入:每个测试案例包括2行:第一行为1个整数n(1第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。输出:对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出
题目1368:二叉树中和为某一值的路径 题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。输入:每个测试案例包括n+1行:第一行为2个整数n,k(1接下来有n行。这n行中每行为3个整数vi,leftnode,rightnode,vi表示第i个结点的值,leftnode表示第i个结点的左孩子结点编号,rightnod
二叉树由后序,中序求先序 #include#include#define MAX 10005int cmp(const void *a , const void *b){ return *(int *)a-*(int *)b ;}int s[MAX] , k , n , las[MAX] , mid[MAX] ,idx;bool tag ;int Findpos(int begin
题目1523:从上往下打印二叉树 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行一个整数n(1Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编
题目1522:包含min函数的栈 题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(1接下来有n行,每行开始有一个字母Ci。Ci=’s’时,接下有一个数字k,代表将k压入栈。Ci=’o’时,弹出栈顶元素。输出:对应每个测试案例中的
题目1520:树的子结构 题目描述:输入两颗二叉树A,B,判断B是不是A的子结构。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行一个整数n,m(1输出:对应每个测试案例,若B是A的子树输出”YES”(不包含引号)。否则,输出“NO”(不包含引号)。样例输入:7 38 8 7 9 2 4 7
题目1521:二叉树的镜像 题目描述:输入一个二叉树,输出其镜像。输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(0Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号。Ci=’l’表示第i个节点有一个左孩子,紧接着是左孩子的编号。Ci=’r’表示第i个节点有一个右孩子,紧接着是右孩子的编号。Ci=’
顺时针打印矩阵 题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行包括两个整数m和n(1接下来的m行
合并两个排序的链表 题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和m(0下面一行包括n个数t(1输出:对应每个测试案例,若有结果,输出相应的链表。否则,输出N
题目1518:反转链表 题目描述:输入一个链表,反转链表后,输出链表的所有元素。(hint : 请务必使用链表)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为一个整数n(0输入的第二行包含n个整数t(0输出:对应每个测试案例,以此输出链表反转后的元素,如没有元素则输出NULL。样例输入:
链表中倒数第k个结点 题目描述:输入一个链表,输出该链表中倒数第k个结点。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和k(0输入的第二行包括n个数t(1输出:对应每个测试案例,若有结果,输出相应的查找结果。否则,输出NULL。样例输入:
题目1513:二进制中1的个数 题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:输入可能包含多个测试样例。对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。。n保证是int范围内的一个整数。输出:对应每个测试案例,输出一个整数,代表输入的那个数中1的个数。样例输
题目1386:旋转数组的最小数字 题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数,其中每个整数a的范围是(1输出:对应每个
题目1512:用两个栈实现队列 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。输入:每个输入文件包含一个测试样例。对于每个测试样例,第一行输入一个n(1接下来的n行,每行输入一个队列操作:1. PUSH X 向队列中push一个整数x(x>=0)2. POP 从队列中pop一个数。输出:对应每个测试案
Strassen矩阵算法分析及其C++实现 递归分治法(转) Strassen矩阵算法分析及其C++实现 递归分治法(转)对于矩阵乘法 C = A × B,通常的做法是将矩阵进行分块相乘,如下图所示:从上图可以看出这种分块相乘总共用了8次乘法,当然对于子矩阵相乘(如A0×B0),还可以继续递归使用分块相乘。对于中小矩阵来说,很适合使用这种分块乘法,但是对于大矩阵来说,递归的次数较多,如果能减少每次分块乘法的次数,那么性能将可以得到
逻辑思维题 【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。答:1.先将6升的杯子装满,在倒入5升的杯子里,那么6升的杯子剩1升。2.将5升的杯子里面的水倒掉,将6升杯子里面的水倒入5升的杯子里面,这是6升杯子为空,5升的杯子里面有1升水。3.将6升的杯子装满,倒入5升的杯子里面,这是6升的杯子里面由2升水,5升的杯子
最大子序列的不同时间复杂度算法 1.求一个序列的最大子序列和的算法时间复杂度为O(n^3),即枚举算法,也就是说:将原序列的每个子序列枚举出来并求和,最后从中找出一个最大值,算法如下: long maxSubSum(const long *a) { long max = 0; for (int i = 0; i {
Another Eight Puzzle Another Eight PuzzleTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 680 Accepted Submission(s): 414Problem DescriptionFill the fo
Robot Motion + 搜索 Robot Motion Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 9 Accepted Submission(s) : 4Problem DescriptionA robot has been program
Sticks Time SticksTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4518 Accepted Submission(s): 1233Problem DescriptionGeorge took sticks of t
Sum It Up Sum It Up Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 6 Accepted Submission(s) : 5Problem DescriptionGiven a specified total t and a
Square Time Square Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 75 Accepted Submission(s) : 15Problem DescriptionGiven a set of sticks of variou
Little Elephant and Mouses Little Elephant and MousesProblem code: LEMOUSESubmitMy SubmissionsAll SubmissionsIt is well-known that the elephants are afraid of mouses. The Little Elephant from the Zoo o
W String Problem W StringProblem code: WSTRINGSubmitMy SubmissionsAll SubmissionsKira likes to play with strings very much. Moreover he likes the shape of 'W' very much. He takes a string and t
Lapindromes Problem LapindromesProblem code: LAPINSubmitMy SubmissionsAll SubmissionsLapindrome is defined as a string which when split in the middle, gives two halves having the same characters a
Predictopus Problem PredictopusProblem code: PREDICTSubmitMy SubmissionsAll SubmissionsChef Datta likes betting in Indian Premier League very much.He has 10000 rupees. Today the match is betwe
Dessert Wizard Problem Dessert WizardProblem code: DELISHSubmitMy SubmissionsAll SubmissionsIt's finally summer in Chefland! So our chef is looking forward to prepare some of the best "beat-the-heat" d
Reverse Number Reverse NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3872 Accepted Submission(s): 1784Problem DescriptionWelcome to 2006
The Hardest Problem Ever + 字符串 The Hardest Problem EverTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12731 Accepted Submission(s): 5765Problem DescriptionJuli
回文数猜想 + 字符串 回文数猜想Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3092 Accepted Submission(s): 1867Problem Description一个正整数,如果从左向右读(称之为正序数)和从右
"红色病毒"问题 + 数论 转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove题源:http://acm.hdu.edu.cn/showproblem.php?pid=2065比赛的时候遇到这种题,只能怪自己高数学得不好,看着别人秒。。。。由4种字母组成,A和C只能出现偶数次。构造指数级生成函
Visible Trees + 数论,互质和容斥原理 Visible TreesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1037 Accepted Submission(s): 429Problem DescriptionThere are many tr
A/B + exgcd (拓展欧基里德算法) A/BTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1036 Accepted Submission(s): 806Problem Description要求(A/B)%9973,但由于A很大,我们只给出n(
Largest prime factor Largest prime factorTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5260 Accepted Submission(s): 1858Problem DescriptionEverybody
C Looooops + 欧基里德 C Looooops Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 0 Accepted Submission(s) : 0Problem DescriptionA Compiler Mystery: We are gi
The Balance + 拓展欧基里德 The BalanceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 91 Accepted Submission(s): 44Problem DescriptionMs. Iyo Kiffa-Australi
Sumdiv SumdivTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 11588 Accepted: 2771DescriptionConsider two natural numbers A and B. Let S be the sum of all natur
归并排序 void Merge(Type sr[] ,Type tr[] , int i , int m , int n ){ /*将有序的sr[i..m]和sr[m+1.n]归并到tr[i..n]*/ for(int j = m + 1 , k = i ; i <= m && j<=n ; k++) { if(sr[i].key > sr[j].key)
堆排序 (建立大顶堆) /*堆栈排序:建立大顶堆*/void HeadAdjust(HeapType &H , int s , int m ){ /*已知H.r[s..m]中记录的关键词除了H.r[s].key之外均满足堆的定义,本函数调整H.r[s] 的关键词,使H.r[s..m]成为一个大顶堆(对其中的记录关键词而言)*/ int rc = H.r[s]; for( int j
简单选择排序 /*简单选择排序*/int SelectMin(Sqlist L, int i ){ //从L.r[i...L.lenght]中选出最小的数,并返回下标 int k = i ; int min = L.r[i]; for( int j = i + 1 ; j< L.lenght ; j ++) if(min > L.r[j]) {
快速排序+递归实现 /*交换顺序表L中字表r[low..high]的记录,轴记录到位, 并返回它的位置,此时在它之前(后)的记录均不大于它。*/int Partition(Sqlist &L, int low , int high){ L.r[0] = L.r[low] ; int pivotkey = L.r[low].key ; while(low<high){ //从low向上找