- 博客(32)
- 资源 (19)
- 收藏
- 关注
原创 二分查找之变形
//寻找一个数,找到刚好比他小的数。比如-1 1 1 1 2 ~~~如果要找1,那么返回的是-1的位置0。如果1开头,那么返回位置-1.int lbs(int *a, int n, int v){ int b = 0, e = n, m; while (b < e){ m = b + ((e - b) >> 1); if (a[m] >= v) e = m; els
2011-10-31 15:14:28 1047
原创 POJ 1205
这里说一下题意,对于排成一排的N个城市,有一条河与这一排城市平行。那么城市在排污水的时候,可以有三种选择,用根管子,连到左边的城市(如果有的话),把污水通过这根管子排到左边的城市 。设置这种方式编号为这个城市自己排到河中。编号为|同样的方式排到右边的城市。编号为?举例如:N= 1, 这个城市可以有编号|种排法。N=2 ||, || 种排法当有K个
2011-10-30 22:38:19 1602
转载 小代码求阶乘
转自http://blog.programfan.com/article.asp?id=25193#include#define N 1000 //要计算的Nlong s[N]={1,1},n=N,t=2,a=1,b=0;int main()//雨中飞燕之作{ for(;a s[a]=(b+=s[a]*t)%10000,b/=100
2011-10-28 22:15:55 822
原创 素数表至40009
//不多说了,素数表,有时候A题需要用到int pList[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,
2011-10-27 19:49:24 2197
原创 ACM 算法艺术与信息竞赛 1.2.6 离散函数
这个题,如果认真看了题意就比较明白了。这里我直接引用百度上的博客1010. Discrete Function题目描述:有一个函数,它的定义域:1 to N(2值域f(n)为long int(in C++)(最后证明在-2^31—2^31)。要求函数上的两个点a,b使得当x∈(a,b)函数f,在直线ab的下方,并且要求ab的倾角最大。分析:解法一:一开始只想到O(n^2
2011-10-25 22:24:51 1171 2
原创 ACM 算法艺术与信息学竞赛 1.2.4 售货员
题目就不去多说了,就是说有两个浮点数P, Q,给一个整数,使得(P*x, Q*x)之间一定有一个整数,注意了,是不包含P*x, Q*x这两个数的。看起来也比较简单。题目链接售货员我这个菜鸟居然错了很多次。下面写一下经历与容易出错的地方。#include#includedouble p, q;double from, to, x;int pp, qq;in
2011-10-25 20:57:55 890
原创 ACM 算法艺术与信息学竞赛 1.2.1 图书馆
这个题在POJ和URAL上都可以找到。下面给出链接ural-1188PKU-1116下面还是把题目粘一下LibraryTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 602 Accepted: 170Description
2011-10-25 20:51:54 1263 3
原创 ACM 算法艺术与信息学竞赛 1.2.1盒子里面的汽球
盒子里面的汽球题目大意我就不多说了,直看一下刘汝佳的书。这里给出链接,与我出错的总结盒子里的汽球Problem 1515 Balloons in a Box Accept: 171 Submit: 919Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionYou m
2011-10-24 21:58:42 1526 1
原创 UARL 1011
题目很简单:给两个浮点数p, q做为输入,两个浮点数都是精确到小数位后面两位。要求一个数x使得[x*p, x *q]中至少有一个整数出现。当然输入13表示13%http://acm.timus.ru/problem.aspx?space=1&num=10111011. ConductorsTime Limit: 2.0 secondMemory Limit: 1
2011-10-22 22:07:56 8454
转载 再论八数码
对于给定八数码棋局的初始状态,我们的目标是通过交换空格与其相邻棋子使棋盘达到目标状态。其中,游戏规则是只能交换空格与其上下左右四个方向的相邻棋子。假设棋局目标状态为如下形式:(A、B、C、D、E、F、G、H表示棋子) A B C D E F G
2011-10-15 19:06:43 12240 1
原创 八数码之广搜
如何测试算法首先要把所有可能的序列都输出来,其实也就是生成全排列了。这里直接给出代码。用以下代码生成12345678x, 至x87654321#include#include#include#include#define MAX 100using n
2011-10-13 15:29:30 1609
转载 HDU OJ 题目分类
基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1
2011-10-12 20:52:40 6609
原创 A*算法
先分析一下来自网上的一段代码:在此算法中,g(n)表示从起点到任意顶点n的实际距离,h(n)表示任意顶点n到目标顶点的估算距离。 因此,A*算法的公式为:f(n)=g(n)+h(n)。 这个公式遵循以下特性:如果h(n)为0,只需求出g(n),即求出起点到任意顶点
2011-10-12 14:46:04 983
原创 位域
学了C语言这么久,第一次仔细接触位域这个概念typedef unsigned int uint;typedef struct _node{ uint year; uint m:4; uint day:5; uint hour:5; uint miniute:6
2011-10-11 21:38:41 618
原创 广度搜索-POJ 1753
http://poj.org/problem?id=1753题意:一个4×4的棋盘,每个格子放着一个棋子。棋子一面是白色,一面是黑色。一次操作可以将某一个格子以及上下左右共5个格子的棋子都翻过来,即白色变黑色,黑色变白色。现在给出一种棋盘状态,问最少需要几次操作可以将
2011-10-11 19:48:06 873
原创 数据结构算法面试题精选及整理-随机数rand7生成rand10函数
据说来自百度的一个面试题问题其实很简单:就是一个函数rand7()可以生成1~7的随机数,现在要求用这个随机数生成器来生成rand10()函数。条件是:不能用循环或递归在点击打开链接里面有讨论。这里要感谢一下这个好学的同学。整理了一下,我就不再整理了。
2011-10-09 01:30:30 4210 9
原创 二叉树代码大全
#include#include#include#include#include#include#includeusing namespace std;templatestruct node{ T data; node *left; node *rig
2011-10-08 14:10:45 1740
原创 编程珠玑第14章
这里把所有关于堆的操作写出来。当做标程吧。#include#include#define ms 1025typedef struct _heap{ int a[ms]; int size;}heap;heap h;static void _shift(he
2011-10-04 13:02:42 1028
原创 编程珠玑第13章
正文为了解决在12章中的随机数问题,本章中的目的是对查看是否在数组中的情况进行处理。那么这里采用了以下几种方法:1、采用C++的set2、采用数组3、采用链表,顺序搜索,插入时不用移动。结果是数组的比链表的要快:1、链表需要读入的内存数比数组大2、数组
2011-10-03 20:01:08 1027
原创 编程珠玑第12章
正文如何生成0~n-1内的m个随机整数1、方法一比如要从5个数里选出2个数,第一个数的概率是2/5,第二个数的概率是1/4,然后是0/3那么现在已经很清楚了。可以写代码如下:for (int i = 0; i < n; ++i) if (ra
2011-10-03 18:57:40 1123 2
原创 编程珠玑第11章
正文插入排序与快速排序习题1、最大值,最小值不用排序O(n)时间可以找到中值也可以不排序O(n)可以找到均值O(n),不过对于浮点数来说,一般求均值,先排一下序,精度会提高。众数一般用散列效果很好。2、3、4、修改程序,最坏
2011-10-03 12:55:48 1005
原创 编程珠玑第10章
正文如何处理压缩数据,最好是找到数据背后的公式。如何存储矩阵。习题1、把部分数据放到磁盘中,那么相应的代码里面的数据会减少。2、三元组矩阵应该也可以算一种处理方式。3、略去4、略去后面都略去,唉都在讲数据压缩~~
2011-10-03 12:48:43 1026
原创 编程珠玑第9章
代码调优:全文解读1、求模: if (num > n) num -= n; 不要使用 num %= n; (当num只是n的1倍多一点的时候)。2、注意在访问内存的时候,要注意内存的连续性,如果访问的内存不是连续的,那么程序的运行速度也会受到极大的影响。
2011-10-02 21:37:49 1269 5
原创 编程珠玑第8章
正文中所提及的算法可以在ecnu oj 1109上面找到。templateT maxSubSum(T *a, int n){ T s = 0, t = 0, mx = a[0]; for (int i = 0; i < n; ++i)
2011-10-02 19:05:40 1818 4
原创 编程珠玑第7章
1、如何进行估算2、估计程序所需要内存数目与时间。3、安全系数。要把性能尽量低估,把安全系数做足。4、Little定律房间里面有60个人,每个人在里面的时间 是3小时,也就是说,每个小时只能进去20个人。如果我们前面还有20个人,说明我们还要等一个小时。我有地
2011-10-02 14:58:53 895
原创 编程珠玑第六章
如果要提高软件的性能,需要从下面几个方面入手:1、算法与数据结构2、算法调优3、数据结构重组4、与系统无关的代码的调优(float取代double)。5、与系统相关的调优,把经常使用的函数进行加速,比如使用汇编6、硬件上使用浮点运算器。可以留个
2011-10-02 13:46:58 1194
原创 编程珠玑第五章
直接来习题吧1、第一题可以看一下林锐的高质量C/C++编程2、3、4、5、第五题很明显不应该每次都用 for (i = 0; i < n - 1; ++i) assert(a[i] < a[i+1]);如何利用二分的性质来进行处理还是一个问题。一种办法是:int bs(int *a, int b, int e, int v){ int
2011-10-02 12:56:13 2020 5
原创 编程珠玑第四章
正文里面涉及到程序设计方法学的内容。不再细述1、加及条件是02、这个函数可以写成如下形式:int bs(int *a, int begin, int end, int v){ int *b = a + begin, *e = a + end, *mid = NULL; if (!a) return NULL; while (b < e)
2011-10-02 00:02:59 1155 2
原创 编程珠玑第三章
习题1、首先是按照税率找到刚好税率最好的情况。这里用二分。int a[100] = { 2200, 2700, ....}double c[100] = {0, 0.14, 0.15, 0.16, ...}首先用二分找最刚好比其小的那个数int b
2011-10-01 21:28:17 2770
原创 二分查找-补充
正确的代码可以写做如下:int bs(int *a, int b, int e, int v){ int *begin = a + b, int *end = a + e, *mid; if (!a || b >= e) return -1; while (begin
2011-10-01 16:23:06 828
原创 编程珠玑第二章
A题给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中一32位整数。1、在文件中至少存在这样一个数?2、如果有足够的内存,如何处理?3、如果内存不足,仅可以用文件来进行处理,如何处理?答案:1、32位整数,包括-2146473648
2011-10-01 15:40:03 2708 3
精通正则表达式PDF
2010-03-05
Ubuntu编译Linux-0.11运行
2009-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人