【编程之美】
文章平均质量分 94
zthgreat
这个人很懒,什么都没有留下
展开
-
c++ 深复制
浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对原创 2014-04-19 10:48:55 · 1394 阅读 · 0 评论 -
求N的阶乘的位数
(1) log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)求位数:log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n),对log10(n!)的值取整加1就是n!的位数。原创 2014-07-27 10:51:37 · 1306 阅读 · 0 评论 -
大数加法
(1)字符串处理 一位一位的加#include #include #include #includeusing namespace std;int main(){ char a[400]; char b[400]; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); cin>>a>>b;原创 2014-07-24 11:18:36 · 412 阅读 · 0 评论 -
最小生成树kruskal算法(并查集)
kruskal算法原创 2014-10-15 00:22:37 · 1030 阅读 · 0 评论 -
指数型母函数
指数型母函数原创 2014-08-05 15:51:09 · 628 阅读 · 0 评论 -
栈的应用--数值转换
将10进制数转换成其它进制的数,利用栈来暂存数据。原创 2014-05-20 15:43:08 · 1910 阅读 · 0 评论 -
栈应用--行编辑程序
编写程序实现从终端接收用户输入的数据,并存入用户数据区。输入#表示上一字符无效,输入@表示当前输入行整行无效。原创 2014-05-20 15:49:13 · 832 阅读 · 0 评论 -
容斥原理应用--错排问题
问题: 十本不同的书放在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?这个问题推广一下,就是错排问题,是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题。原创 2014-06-22 22:02:59 · 3620 阅读 · 0 评论 -
数组中只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字原创 2014-08-27 22:47:11 · 431 阅读 · 0 评论 -
直接插入排序
基本思想:当插入第i 个对象时,前面的R [1],…, R[i-1]已经排好序, 此时用R[i]的关键字与R[i-1],R[i-2], …的关键字顺序进行比较,找到插入位置即将R[i]插入,原来位置上对象向后顺移。原创 2014-06-27 20:50:23 · 533 阅读 · 0 评论 -
素数筛选法
这种方法效率较高,能处理的数据也很多,缺点就是数组必须很大,如果原创 2014-05-18 22:31:18 · 576 阅读 · 0 评论 -
递推关系
1.汉罗塔问题。2.斐波拉契数列原创 2014-06-22 22:47:31 · 1159 阅读 · 0 评论 -
并查集(Union-Find)算法介绍
并查集原创 2014-10-11 21:18:21 · 1046 阅读 · 0 评论 -
大数阶乘
首先定义一个足够长的数组。拿10000的阶乘为例,最后的结果长度是35660位,所以我们定义一个40000个成员的数组就可以了。int result[40000];其核心思想就是把计算结果每一位上的数字保存到一个数组成员中,例如:把124保存至数组中,保存结果应该是result[0] 4result[1] 2result[2] 1这样肯定是没有问题的,一个int型数原创 2014-08-04 21:25:04 · 489 阅读 · 0 评论 -
直线,折线,曲线分割平面以及平面分割空间问题
1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条转载 2014-08-03 17:55:02 · 657 阅读 · 0 评论 -
快速排序
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。原创 2014-05-24 18:26:54 · 474 阅读 · 0 评论 -
栈应用--斐波拉契数列
用栈来处理递归程序。原创 2014-05-20 15:52:51 · 782 阅读 · 0 评论 -
链表应用--约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。原创 2014-05-20 15:09:59 · 945 阅读 · 0 评论 -
图的单源最短路径Dijkstra算法
单源最短路径问题给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。原创 2014-10-09 00:49:55 · 1169 阅读 · 0 评论 -
母函数(生成函数)
母函数(Generating function)详解在数学中,某个序列的母函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身转载 2014-06-22 21:47:19 · 779 阅读 · 0 评论 -
最小生成树prim算法(贪心)
一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小。综合以上两个概念,我们可以得出:构造连通网的最小代价生成树,即最小生成树(Minimum Cost Spanning Tree)。Prim算法也是利用贪心算法来解决最小生成树。最小生成树MST性原创 2014-10-09 19:27:49 · 1558 阅读 · 1 评论 -
矩阵 快速幂取模算法
快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。以下以求a的b次方来介绍把b转换成二进制。该二进制数第i位的权为例如 11的二进制是101111 = 2³×1 + 2²×0 + 2¹×1 + 2º×1因此,我们将a¹¹转化为算----原创 2015-01-06 20:58:39 · 2206 阅读 · 0 评论 -
二叉堆之优先队列
一、优先队列不同于普通队列采用先进先出的队列元素存取方式。插入队列元素时按照一定的规则插入,每次都是取队列中优先级最高的元素。在操作系统中,调度程序必须决定在什么时候运行哪个进程。一般来说,短的作业是需要尽可能快地完成,也就是说,短的作业应该拥有优先权。这种特殊的应用将由一种特殊的队列来完成,这种数据结构叫做优先队列。二、最基本的两种操作 优先队列具备的最基本的两种操作,是插入和原创 2014-12-22 21:41:54 · 612 阅读 · 0 评论 -
图论--关键路径
拓扑排序主要是为解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题。如果我们要对一个流程图获得最短时间,就必须要分析它们的拓扑关系,并且找到当中最关键的流程,这个流程的时间就是最短时间。在前面讲了AOV网的基础上,来介绍一个新的概念。在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,用边上的权值表示活动的持续时间,这种有向图的边表示活动的网,称之为原创 2015-01-02 10:09:45 · 3036 阅读 · 0 评论 -
链表应用-- 一元多项式相加
typedef struct ret{ int coef; //系数 int expn; //指数}ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}*LinkList;void init(LinkList &L){ L=(LinkList)malloc(sizeof(LNode原创 2014-05-20 15:29:07 · 1338 阅读 · 0 评论 -
图的邻接表的实现(链表+数组)
图原创 2014-10-16 15:39:02 · 923 阅读 · 0 评论 -
2014编程之美初赛第一场题目3 : 活动中心
时间限制:12000ms单点时限:6000ms内存限制:256MB描述A市是一个高度规划的城市,但是科技高端发达的地方,居民们也不能忘记运动和锻炼,因此城市规划局在设计A市的时候也要考虑为居民们建造一个活动中心,方便居住在A市的居民们能随时开展运动,锻炼强健的身心。城市规划局希望活动中心的位置满足以下条件:1. 到所有居住地的总距离最小。2. 为原创 2015-04-08 18:31:59 · 1058 阅读 · 0 评论 -
非对称加密算法RSA学习
RSA加密算法是最常用的非对称加密算法,RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。 RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:RSA算法并不难,只需要一点数论知识就可以理解。一、互质关系这个很简单,这里原创 2015-05-08 20:46:25 · 1334 阅读 · 0 评论 -
2015年百度之星程序设计大赛 - 资格赛
1001 大搬家 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Description近期B厂组织了一次大搬家,所有人都要按照指示换到指定的座位上。指示的内容是坐在位置i上的人要搬到位置j上。现在B厂有N个人,原创 2015-05-24 16:50:22 · 1286 阅读 · 0 评论 -
欧拉回路、欧拉路径
欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次,称这条回路为欧拉回路。具有欧拉回路的图成为欧拉图。判断欧拉路是否存在的方法有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。 无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。 判断欧拉回路是否存在的方原创 2015-05-14 17:45:05 · 1024 阅读 · 0 评论 -
MD5哈希算法学习
一.哈希函数简介二.MD5哈希算法流程 三.MD5分组过程四.MD5子明文分组和链接变量五.MD5第1轮运算六.MD5后3轮运算七.求和运算八、程序的实现九、MD5总结原创 2015-06-03 19:31:25 · 9582 阅读 · 2 评论 -
hiho一下 欧拉路三
hiho一下时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho破解了一道又一道难题,终于来到了最后一关。只要打开眼前的宝箱就可以通关这个游戏了。宝箱被一种奇怪的机关锁住:这个机关是一个圆环,一共有2^N个区域,每个区域都可以改变颜色,在黑白两种颜色之间切换。小Ho控制主角在周围探索了一下,果然又发现了原创 2015-06-25 14:05:36 · 648 阅读 · 0 评论 -
hiho一下 连通性二·边的双连通分量
时间限制:10000ms单点时限:1000ms内存限制:256MB描述在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师找到了小Hi和小Ho,希望他俩帮忙。老师告诉小Hi和小Ho:根据现在网络的情况,我们要将服务器进行分组,对于同一个组的服务器,应当满足:当组内任意一个连接断开之后,不会影响组内服务器的连通性。在满足以原创 2015-07-10 17:33:55 · 1208 阅读 · 0 评论 -
根据二叉树的前序和中序求解树
求解方法类似于根据中序和后序求解树根据前序把中序分为左右子树,然后依次递归。前序:ABCDEFG中序:CBDEAFG#include #include #include using namespace std;typedef struct node{ char data; struct node *rchild,*lchild;}BiTNode,原创 2014-12-02 20:25:04 · 603 阅读 · 0 评论 -
图的单源最短路径SPFA算法
算法大致流程是用一个队列来进行维护。初始时将源加入队列。每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。直到队列为空时算法结束。这个算法,简单的说就是队列优化的bellman-ford,利用了每个点不会更新次数太多的特点发明的此算法SPFA——Shortest Path Faster Algorithm,它可以在O(kE)的时间复杂度内求原创 2014-10-27 00:30:54 · 666 阅读 · 0 评论 -
Tarjan离线算法求最近公共祖先(LCA)
Problem DescriptionThere are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house原创 2014-10-20 18:09:18 · 736 阅读 · 0 评论 -
图的单源最短路径Bellman-Ford算法
Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。适用条件&范围:单源最短路径(从源点s到其它所有顶点v);有向图&无向图(无向图可以看作(u,v),(v,u)同属于边集E的有向图);边权可正可负(如有负权回路输出错误提示);原创 2014-10-26 17:06:22 · 1017 阅读 · 0 评论 -
图论--拓扑排序及其应用
在⼯工程实践中,⼀一个⼯工程项⽬目往往由若⼲干个⼦子项⽬目组成。这些⼦子项⽬目间往往有两种关系:1先后关系,即必须在⼀一项 ⽬目完成拭⼀一,才能开始实施另⼀一个⼦子项⽬目;2⼦子项⽬目间⽆无关系,即两个⼦子项⽬目可以同时进⾏行,互不影响。⼯工⼚厂⾥里产品的⽣生 产线上,⼀一个产品由若⼲干个零部件组成。零部件⽣生产时,也存在这两种关系:先后关系,即⼀一个部件必须在完成后才能⽣生 产另⼀一个部件;部件原创 2014-11-06 10:29:57 · 9126 阅读 · 0 评论 -
hiho一下 Trie树
时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?原创 2015-07-27 17:17:12 · 531 阅读 · 0 评论 -
hdu 1622 Trees on the level(二叉树的创建与遍历)
二叉树的创建原创 2015-01-24 11:53:53 · 1654 阅读 · 0 评论