- 博客(11)
- 资源 (12)
- 收藏
- 关注
原创 100题 68
68题输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的只要把相邻两个字符串进行连接,比较字符串大小。最后排序一下即可用c++实现起来比java麻烦多了,int与string不能直接连接的,必须先把int转化成stringc++11标准中提供了std:tostring方法#include#include#include#include using
2013-08-30 15:56:20 494
原创 编程珠玑column15 strings of pearls
15.2介绍了求字符串中最长的重复子串的方法。其中一种方法是先申请一个指针数组a保存指向该字符串中每一个字符所在的地址。这样a中的元素依次为第0个字符,第1个字符,第2个字符.的地址...。然后对a进行一个快速排序。这样最长的重复子串只需从a中的相邻元素中搜索。排序耗时o(nlgn),,相邻元素之间比较计算最长重复子串耗时o(n)
2013-08-28 14:25:03 588
原创 fortran save statement
以下段落引用自http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node156.htmlThe SAVE statement has two alternative forms: SAVE item, item, ... item SAVE Where each item can be a local variable o
2013-08-27 14:49:52 894
原创 编程珠玑column14 heaps
堆的siftdown操作假设x[1..n]的序列已经是一个堆,现在修改x[1]的值,然后调整这个序列使维持堆的性质初始化所以i为1,直到i没有子节点或者子节点的值均大于i所在的节点的值为止。把c设置成节点i的子节点中值较小的节点索引c=2*iif(c+1if(x[c+1]c++
2013-08-27 13:48:19 985
原创 编程珠玑column12
12.2列举了从[0,5)中选2个数的情形,0被选中的概率是2/5通常情况下,从r个数中选择s个数,某一个数(确切说是选择第1个数时)被选中的概率是s/r可以这样思考:从r个数中任选一个数该数被选中的概率是1/r,但这是选择s个数,就相当于s次机会,相当于s/r,这样思考不严谨。参考了http://blog.csdn.net/songzitea/article/detail
2013-08-26 11:12:12 578
原创 编程珠玑 column 11 sorting
快速排序算法的比较。在排序一个所有元素均相同的数组的时候:qsort1每一次递归调用排序区间只能缩减1,只能排序好一个数字,可以从代码qsort1(m+1,u)中体现。因为所有元素相同时,qsort中m值执行的时候不会发生变化。qsort1排序区间的缩小只能体现在qsort1(m+1,u)中。即要执行n-1次qsort1递归调用。每次qsort1递归调用,需进行改进后快速排
2013-08-24 12:51:00 653
原创 编程珠玑 column 10
主要介绍的稀疏矩阵的存储方式。没必要存储矩阵的每个点。只需存储不为0的值的点。使用一个数组来代表所有的列,一个链式表来代表给定列中的不为0的元素该链式表可以定义成struct Node p{int pointnum;int row;Node *next}
2013-08-23 20:56:57 569
原创 编译错误记录
segmentation errorcall MPI_Allreduce的时候少了最后一个参数ierr,fortran的MPI实现都有这个额外的ierr参数,竟然没提示错误,执行的时候就出现了segmentation fault,结果找了很久forrtl: severe (174): SIGSEGV, segmentation fault occurred
2013-08-22 09:05:29 2977
原创 100题15输入一颗二元查找树,把该树转化为它的镜像
即在转化后的二元查找树中,左子树的结点都大于右子树的结点 迭代算法可以用栈来实现,可以把结点的左右子树的根都压入栈。印象中关于树的很多题目的非递归实现均可以用stack来实现定义一个swap函数交换树的左右子节点void swap(Node *l,Node *r){Node *temp=l;l=r;r=temp;}void mirror(Node *root)
2013-08-21 19:51:47 585
原创 100题求一个矩阵中最大的二维矩阵(元素和最大)
题目本质上是求使得A[i][j]+A[i][j+1]+A[i+1][j]+A[i+1][j+1]最大的i,j值为了减少计算量,可以先把相邻两行对应列的数先加起来存储到一个本地数组sub上,这样二维问题便递减到一维上,sub上求最大的和即可#includeusing namespace std;templateint max_sum(int (&A)[m][n],in
2013-08-21 15:05:25 968
原创 编程珠玑第9章二分搜索(有重复数字)中查找某数出现的第一个位置
binary search:search the first occurence of a number 查找的数中有重复的数只需在原始的二分搜索基础上进行修改,当中间的数A[mid]与target值相同时,target值的第一次出现要么是在mid处,要么是在mid左边。若low与mid(low==mid)的闭区间只包含一个数,则返回值为mid,若low具体实现如下#inc
2013-08-21 09:49:10 1732
mysql-connector-java-5.1.7驱动
2009-07-17
运动会计分系统(c++,包括课程设计文档)
2009-07-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人