- 博客(85)
- 资源 (11)
- 收藏
- 关注
原创 c++-const限定符
用const给字面常量起个名字(标识符),这个标识符就称为标识符常量;因为标识符常量的声明和使用形式很像变量,所以也称常变量定义的一般形式:
2014-04-11 16:16:44
619
原创 给定一个十进制的正整数N,计算从1开始到N的的所有整数中1出现的个数
这个题目看似很简单,其实是一个复杂的过程。(一)如果按照平常的思路,依次遍历1到N计算1出现的次数,这样做非常的简单,但是时间是一个苦恼的问题,运算量过大按照平常思路的代码如下:#include using namespace std;int getCount(int num){ int count = 0; while(num) { count+
2014-03-13 15:43:10
6363
3
原创 寻找“发帖”水王
题目是这样的:现在有一个论坛的帖子id列表,其中有一个id在此里表中的数目占总贴的一半还要多,现在要找出这个id有时还会经常看到这个题目的表中,例如13年考研中的算法题,就是设计一个算法来寻找在一个数组中元素个数超过总个数一半的元素。(1)如果对这个数组进行先排序的话,排序花费的时间为o(nlogn),再要遍历寻找到此元素,时间复杂度为o(nlogn+n) 其实不用
2014-03-11 08:04:59
805
原创 给定一个整数N,那么N!末尾有多少了0
例如N=10,N!=3628800 末尾有两个零题目表面看起来很简单,就是要求因式分解后因子有几个5,5X2=10, 只要是偶数就有2这个因子,显然5的个数就代表了N!结果中末尾0的个数起初我的思路是含有N/5个0,没有考虑到5的次方的问题,导致了问题的错误正确的解法应该是,先算N/5,则有N/5个5,同时考虑N/5^2 .....例如N=1000 N/5 = 20020
2014-03-10 16:08:25
1156
原创 对于一个字节(8bit)的变量,求二进制表示中"1”的个数,要求算法的执行效率尽可能的高
题目中要求执行效率要尽可能的高,我只想到了将除法改为位运算符来实现,还有很多没有考虑的地方。下面通过几个程序来看这个问题:1.最简单的程序#include using namespace std;int main(){ unsigned char b_num; int i_count=0; cout<<"请输入一个1~256之间的整数"<<endl;
2014-03-10 10:02:56
2912
原创 12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球,并且知道此球比其它球是轻还是重,如果13个球呢
题目中只说明了有一个球和其他的重量不同,但是没有说明这个不同的球是重还是轻。令球的编号为1,2,3,4 5,6,7,8 9,10,11,12 每四个一组,分为三组首先1,2,3,4 与5,6,7,8比较(1)1,2,3,4 = 5,6,7,8 ==========>坏球在9,10,11,12中======》1,2与9,10比较 ①1,2
2014-03-07 11:09:25
1687
原创 一个n位的数,去掉其中的k位,问怎样去使得留下来的(n-k)位数按原来的前后顺序组成的数最小
例如: 8314925去掉4个数,留下125最小,注意有前后顺序要求,要是没有顺序当然是123。方法看图片,从前往后找,每次访问一位,比较该位前边的数,如果比该位大,果断干掉,可以使用栈来完成此操作程序实现: #include #include using namespace std;int main(){ int n,k; cout<<"请
2014-03-06 10:56:08
1844
原创 输入年份和天数计算日期
首先要判断这年是不是闰年将每月的月份存储到int数组中可以方便处理实现程序如下: #include "iostream"using namespace std;int main(){ int year,days; //input year and days int months[12]={31,28,31,30,31,30,31,31,30,3
2014-03-03 11:23:41
3044
原创 英文变位词实现
先解释一下变位词,变位词就是长度相同,具有相同字母组成的词比如:sales sales sales sales sales sales sales sales sales sales salse 就是变位词在介绍程序之前,首先熟悉几个小内容(1)sort函数使用sort函数首先要引入algorithm包,默认是升序排序eg:sort(a,a+n); //a,a+n是数组要排
2014-03-03 10:54:20
1404
原创 python 文件扩展名
1源代码 .py为扩展名 用python解释 一般在第一行要指定解释文件路径 #!/usr/bin/python 执行使用./1.py2 字节代码(编译后生成的文件).pyc为扩展名 先引入模块,在文件的开头加上import py_compilepy_compile.compile(‘1.py’)生成编译文件3 优化代码.pyo为扩展名
2014-01-24 12:29:21
2444
原创 Linux下Samba服务器的安装与配置
转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3001863.html一、Samba服务器安装(.tar.gz源码安装篇)1.获取Samba的源码包并且进行解压缩首先先记录下自己折腾了一天一夜的源码安装Samba服务器,虽然最后没有成功,但是当中的辛酸苦辣自己可是吃了个透。。。。。要下载Samba的源
2014-01-04 12:28:54
2760
2
原创 linux 挂在windows ntfs盘方法
引用自 http://songxj.blog.51cto.com/620981/1173168使用rpmforge源安装ntfs-3g包,挂载之后直接就是可读写的。[root@test ~]#wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
2014-01-02 16:01:24
842
原创 linux 与 windows 文件编码问题
这个问题困扰了我很久现在还没有完全搞清楚。先把用到的命令记下来首先罗列几个关于编码的命令1.查看文件内容的十六进制或者ascii(后面最好加上less,因为文件通常都是非常大的)hexdump -C file | less 2.查看文件的编码解决vim乱码问题在vim.rc 中在最后加上 set encoding=utf-8 fileencodings=ucs-
2013-12-31 16:21:04
765
原创 中文分词-最长匹配法的实现
最长匹配法的基本思想是:设词表中最长的词由m个字(程序中m=5)组成,每次进行切分时总是从待切分的句子中截取一个长度为m的匹配字段w,查找分词词典。(1)若在词典中,则匹配成功。匹配字段w作为一个新词被切分出来(2)若不在词典中,则匹配失败,从w中去掉最后一个词,进行新的匹配。如此进行下去,直到匹配成功为止。如果完成一次匹配就将匹配成功的单词从句子中去掉,按照上述步骤重复进行切分,直至
2013-12-02 08:23:10
2130
原创 c++ 文件读写操作
文件的输入输出要有头文件fstream判断文件是否正确打开 :is_open()以前是open()判断是否读取文件结束 :eof()1.ASCII的输入输出ofstream fOut("F:\\dataOut.txt"); =ofstream fOut; fOut.open("F:\\dataOut.txt");使用>读出到变量中,是按照空格来作为一个变量赋值的结束
2013-11-29 20:46:57
966
转载 编程命名规范
文章转载于:http://blog.sina.com.cn/s/blog_52cbfc3f0100fdy6.html匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述。其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。目前在Windows程序开发和MFC程序开发中常用的命名规则是匈牙利命名法。下面就是HN命名法的一
2013-11-28 19:27:23
873
原创 Linux——扩展正则表达式
使用egrep或者grep -E 一般都是使用egrp语法:扩展正则表达式RE字符意义与范例+重复一个或者一个以上的前一个字符egrep -n 'go+d' regular_express.txt?零个或者一个前一个字符egrep -n 'go?d' regular_express.txt|or的意思
2013-11-20 21:26:20
1939
原创 Linux——sed工具
sed 本身是一个管道命令,可以分析standard input,而且sed还可以将数据进行替换删除、新增、选取特定行等功能。sed [-nefr] 动作-n : 使用安静模式-e : 直接在命令行模式上进行sed动作-f : 写到一个文件中-i :修改除了-i时修改文件的内容之外,其他的都只是控制输出显示而已动作说明 n1,n2 行数,可有可无a: 新增
2013-11-20 21:04:34
952
原创 linux——正则表达式
使用正则表达式时,需要特别的留意当时环境的语系,否则可能会发现与别人不相同的选项结果。1.正则表达式中的特殊符号及其含义:特殊符号代表意义[:alnum:]代表英文大小写字符,即0-9,A-Z,a-z[:alpha:]代表任何英文大小写字符,即A-Z,a-z{;blank;}代表空格和Tab[:cntrl:]
2013-11-19 20:13:51
1174
原创 从c转向c++
1.尽量使用const和inline而不用#define因为预处理在找错时不好找,而且经常会出错2.尽量用而不用iostream是类型安全的,而且扩展性好。iostream.h 与 iostream还不一样,应该尽量使用后者,可以避免名字冲突3.尽量使用new和delete 而不是malloc和free这两对是成对存在的不要用混了,用混了后果不堪设想4.尽量使用c++风
2013-11-18 15:18:10
1119
原创 亲密数算法
如果整数a.b 的因子之和等于整数b,整数b的因子之和等于a,因子包括1但不包,本身,且a不等于b,则称a、b为亲密数#include #include //判断是否为亲密数int isfriendnum(int a, int b){ int sum=1; for(int i=2; i<=a/2; i++) { if(a%i == 0) {
2013-11-17 20:02:29
1381
原创 python初步入门
1.Print输出(1)有自动换行如果不想自动换行在后面加逗号,换行的时候要用反斜杠\(2)通配符 >>> print 'number is %d, str is %s' % (1,'nihao') ==》后面的括号其实是元组 number is 1, str is nihao (3) 重定向 >>> f = open('e:\in.txt','w')
2013-11-17 19:06:46
978
原创 洗扑克牌算法
一副扑克共有52张,4中花色如果我们随机的生成一个数字和花色的话,可能会产生和前面一样的数据。这里我们采用随机换牌的方法洗牌(1)先按顺序生成一副扑克(2)产生一个0~51的随机数,将此随机数作为扑克的下标与第i张牌交换,然后随机的交换52次结束。就会得到一个打乱顺序的扑克其中ASCII中的3,4,5,6对应着扑克中的红桃,方片,梅花,黑桃实现代码如下:#include
2013-11-17 09:15:03
2153
原创 百钱买百鸡
问题描述:公鸡5文钱1只,母鸡3文钱1只,小鸡1文钱3只。问如何用100文钱买100只鸡这是一个解不定方程的问题,问题的解不是唯一的,要求输出所有的解实现代码如下:#include void main(){ int x,y,z; int money,num; printf("请输入钱数:\n"); scanf("%d",&money); printf
2013-11-16 17:14:23
1148
原创 完全数
当一个自然数所有的真因子的和小于该自然数时,该自然数便是亏数当一个自然数所有的真因子的和等于该自然数时,该自然数便是完全数当一个自然数所有的真因子的和等于该自然数时,该自然数便是盈数 下面程序时判断一个数是否为完全数:#include void main(){ int num; printf("请输入一个整数:\n"); scanf("%d",&num)
2013-11-16 16:52:05
985
原创 动态数组排序
一个好的算法往往依赖于一个合理的数据结构在很多情况下排序问题是不知道排序数据的个数的,通常的做法是(1)建立一个空间很大的数组,保证空间够用,但是这样会造成很大的浪费(2)在知道数组个数的情况下可以用malloc函数来分配数组个数是个变量的情况,但是在个数未知时就不能实现了(3)利用链表实现动态的数组,这样不管数组的长度是多少都可以进行存储和排序了下面通过冒泡排序来理解一下动态
2013-11-16 14:49:58
3340
原创 判断闰年
首先介绍一下闰年的定义闰年:能被四或者四百整除但是不能被100整除的年份为闰年原因:每四年都会多出一天多的时间,所以一般是每四年一个闰年,但是每400年会又多出三天的时间,然后就规定整百(不包括被400整除)的年份不为闰年,这样就可以避免多出来的三天的时间。在百度百科中有详细的时间计算,有兴趣的同学可以去研究一下判断是否为闰年的代码如下:#include #include
2013-11-16 13:26:28
1221
原创 python的安装与启动
1.下载 下载地址可以去python的官方网站http://python.org下载或者 以下都是windows版本python2.5 32位http://download.csdn.net/detail/fengge6715/6560241 python2.5 64位 http://download.csdn.net/detail/fengge6715/6560247py
2013-11-16 09:09:15
1432
原创 使用邻接表实现基数排序
使用邻接表实现基数排序可以节省内存使用空间,但是在排序上会有问题,解决的办法就是在分配数组的时候从最后一个数组开始分配,收集的时候从第一个开始收集就可以解决了。实现代码如下:注:使用不同的编译器是不一样的,我是在vc++6.0下编程的,在变量的作用域空间的地方会和其他的编译软件不同。#include #include #include #include /*******
2013-11-10 20:50:35
667
原创 改进的堆排序算法
对堆排序的改进1.将数据初始化为大顶堆,交换第一个和最后一个元素,这里是不变的2.重新构造大顶堆是,首先让第一个元素下降h/2的高度(h 为堆的高度)3.下降了h/2层后判断这个元素与它的父节点谁大,如果父节点大继续下沉,下沉的结束条件为h=0 如果父节点小,表明第一个元素下沉时走过头了,然后要往回走,进行上浮操作,上浮操作是肯定能够找到第一个元素的最终位置的4.循环n-1
2013-11-04 14:49:29
1098
原创 改进的快速排序算法
快速排序算法的改进思路1.选取好的基准,是两边的数据个数尽量的均匀 取数组的第一个,中间,最后一个数据,取三个数中第二大的数作为基准2. 不递归3.与插入结合,当段内的数组个数小于等于16的时候,使用插入排序具体实现代码如下:#include #include #include #include /**************************
2013-11-02 20:43:06
1282
改进的快速排序算法
2013-11-04
改进的堆排序算法
2013-11-04
冒泡算法的改进算法
2013-11-01
归并算法的改进算法
2013-10-31
欧拉回路的构建及输出欧拉回路的路径
2013-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅