03 2012 档案

NYOJ 35题 表达式求值,四则运算(栈实现) 严蔚敏
摘要:这些函数中都有“重复”的,因为操作数(OPND)栈用double,操作符(OPTR)栈用char。C++中的模板可以解决这个问题吗?这是对着书写的:#include <iostream> using namespace std; #define STACK_INIT_SIZE 100 #define STACKINCREMENT 100 char Precede_Matrix[7][7] = { {'>', '>', '<', '<', '<', '>' 阅读全文

posted @ 2012-03-31 22:13 c语言源码 阅读(441) 评论(0) 推荐(0)

XMU 1255
摘要:http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1255整数划分问题 996ms险过..(递归法)#include<cstdio> #include<string> #include<map> using namespace std; int n,mod; long long dps[500][500]; long long dp(int n,int m){ //n表示要拆分的整数,m表示拆成的数最大是几/拆成m个数的和 if(n<=1 || m==1)return 1; if(n<m)retur 阅读全文

posted @ 2012-03-31 21:26 c语言源码 阅读(267) 评论(0) 推荐(0)

STL MAP 的一个注意点
摘要:一个map就是一个(关键码(key),值(value))对偶的序列,它提供基于关键码的快速提取操作。也就是说,可以用下标运算符[]将关键码作为下标去执行查找,并返回对应的值。因此可以把map的使用方法想象成有特殊下标的数组。在很多时候用下标运算符[]来对map中的元素进行存取是非常方便和简单的;但是,如果map下标运算符[]运用不得当,也会造成意想不到的问题。 我们知道,C++是不检查下标越界的。用超出数组下标范围的下标去访问数组元素的错误会在运行期出现,很有可能将程序搞崩溃。对于map而言,也没有类似的下标越界概念,但是却有作为下标的关键码(key)在map中不存在的现象。在这种情况下,如果 阅读全文

posted @ 2012-03-31 19:51 c语言源码 阅读(278) 评论(0) 推荐(0)

为什么你不被重视
摘要:引言记得有这样几句话来描述学生适应社会的过程,具体记不清了,大意是:二十岁至三十感觉社会欺骗了我,三十岁后感到社会还是公平的。当我们刚出校门的时候是意气风发,终于学有所成,迫切的响大展身手。可是随之而来我们会发现自己碰壁了:找工作,不顺心,不好找;找了工作,工作不顺心,不受重视,还累死累活...而我们发现,很多人拿的钱居然比自己多N倍,但自己明明有很多地方比他(她)强,诸于此类。于是很快对社会失去了信心,大呼:苍天不公啊。我相信大部分人都有过经类似经历。 工作了快三年了,从的的青涩懵懂,战战兢兢,到现在居然也可以坦然面对惨淡人生。虽然依旧是穷人、凡人一个,但总算是有自己思维的凡人一个。几年的历 阅读全文

posted @ 2012-03-31 16:11 c语言源码 阅读(219) 评论(0) 推荐(0)

括号匹配(栈实现)
摘要:#include <cstdio> #include <iostream> using namespace std; #define MAXSIZE 20 typedef struct { char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack &S) { S.base = (char *)malloc( MAXSIZE * sizeof(char) ); if(S.base == NULL) exit(-2); S.top = S.base; S.stacksize = MA 阅读全文

posted @ 2012-03-31 13:17 c语言源码 阅读(403) 评论(0) 推荐(0)

文字常量区,字符串常量
摘要:可以:#include <stdio.h> int main(void) { char str[8] = {0}; str[0] = *"jiang"; printf("%s\n", str); return 0; }2012/5/16 更新补充一个例子(正确):#include <iostream> using namespace std; int main(void) { cout << "0123456789"[5] << endl; return 0; }输出结果是5 阅读全文

posted @ 2012-03-31 00:50 c语言源码 阅读(198) 评论(0) 推荐(0)

生成排列和组合
摘要:1 . 无重复元素的全排列当然stl有next_permutation()函数,用起来更方便#include<cstdio> #include<string> using namespace std; int n,a[100],count; void permutation(int k){ if(k==n){ for(int i=1;i<=n;i++) printf("%d ",a[i]); printf("\n"); count++; return; } for(int i=k;i<=n;i++){ int tem= 阅读全文

posted @ 2012-03-30 19:21 c语言源码 阅读(387) 评论(0) 推荐(0)

为什么 C++不叫作++C? o(∩_∩)o
摘要:【答】 C++之名是 Rick Mascitti 在 1983 年夏天定名的(参见 The C++ Programming Language(Special Edition) 1.4节) ,C说明它本质上是从 C语言演化而来的,“++”是 C语言的自增操作符。C++语言是 C 语言的超集,是在 C 语言基础上进行的扩展(引入了 new、delete 等 C语言中没有的操作符,增加了对面向对象程序设计的直接支持,等等) ,是先有C 语言,再进行++。根据自增操作符前、后置形式的差别(参见习题 5.15 的解答) ,C++表示对 C语言进行扩展之后,还可以使用 C语言的内容;而写成++C则表示无法 阅读全文

posted @ 2012-03-30 18:45 c语言源码 阅读(295) 评论(0) 推荐(0)

关于javaMail邮件发送系统
摘要:javaMail邮件发送系统,大家可以写个通用的底层方法去实现代码如下 //邮件系统添加附件 public static MimeBodyPart createAttachment(String fileName) throws Exception { MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileName); attachmentPart.setDataHandler(new DataHandler(fds)); ... 阅读全文

posted @ 2012-03-30 14:35 c语言源码 阅读(181) 评论(0) 推荐(0)

判断网址能不能访问
摘要:看了篇文章可能会用的上,直接贴过来了。private bool UrlIsExist(String url){ System.Uri u = null; try { u = new Uri(url); } catch { return false; } bool isExist = false; System.Net.HttpWebRequest r = System.Net.HttpWebRequest.Create(u) as System.Net.HttpWebRequest; r.Method = "HEAD"; try { System.Net.Htt... 阅读全文

posted @ 2012-03-30 14:09 c语言源码 阅读(373) 评论(0) 推荐(0)

一个数学期望问题
摘要:1 . 有一个经典的概率问题:平均需要抛掷多少次硬币,才会首次出现连续的 n 个正面?它的答案是 2^(n+1) - 2 。证明还不会。http://www.matrix67.com/blog/archives/3638http://www.cnblogs.com/atyuwen/archive/2010/09/12/coin.html2 . 随便取一个 0 到 1 之间的数,再加上另一个 0 到 1 之间的随机数,然后再加上一个 0 到 1 之间的随机数⋯⋯直到和超过 1 为止。一个有趣的问题:平均需要加多少次,才能让和超过 1 呢?答案是 e 次。http://www.matrix67.c 阅读全文

posted @ 2012-03-30 12:25 c语言源码 阅读(288) 评论(0) 推荐(0)

不用数组实现杨辉三角(巴斯卡三角形)
摘要:这个思想是很先进,所以分享了,大家可以参考一下,import java.util.Scanner; /** * 输出的结果为为下所示: * 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 * @author 王新 * */ public class Test { publ... 阅读全文

posted @ 2012-03-29 23:33 c语言源码 阅读(1522) 评论(0) 推荐(0)

(转)教你深度睡眠,熬夜的失眠的程序员看看
摘要: 阅读全文

posted @ 2012-03-29 16:57 c语言源码 阅读(133) 评论(0) 推荐(0)

矩阵的特征值 => 矩阵的幂 => 广义斐波拉契数列的通项公式
摘要:众所周知,计算机里动辄涉及到斐波拉契数列,本文主要是运用线性代数的方法求出广义斐波拉契数列的通项公式。广义斐波拉契数列的定义(自定义,可能还不够严谨,欢迎指教)如下:且a,b满足a^2 + 4b > 0(原因后面有,即保证分母Δ>0)观察递推公式可知: (1)OK!写这篇博客有两点启示:1.亦可用差分方程的方法求通项公式,不过我还没学,我发现把递推关系用矩阵的形式写成再求通项也是可以的,不过要构造出这个关系比较困难,比如(1)式。2.在一般的算法中求矩阵的幂几乎都是用二分法求,殊不知若λi下有ki个线性无关的特征向量(ki是λi的重根数),即可用相似对角形的方法求,这在高等数学里可 阅读全文

posted @ 2012-03-29 09:58 c语言源码 阅读(353) 评论(0) 推荐(0)

c# 窗口句柄问题(转)
摘要:1、如何获得一个窗口的句柄? 例如获取窗口PictureBox控件(其他控件也可以)的句柄,IntPtr handle = pictureBox.Handle;2、注意:窗口创建和窗口创建完毕即有句柄完全是两回事!!! 窗口创建时,窗口并没有创建句柄,只有Application.Run(form)或者form.Show()之后才有句柄,即窗口只有显示或者启动消息循环后才有句柄!如果创建form之后Form. form. = new Form(),主线程中调用form.Handle,如果句柄尚未创建,引用该属性将强制创建句柄,对系统内的逻辑将产生致命的影响。 3、如何判断一个窗口的句柄创建完毕? 阅读全文

posted @ 2012-03-28 17:31 c语言源码 阅读(376) 评论(0) 推荐(0)

书单
摘要:计算机程序设计艺术算法导论代码大全编译原理人月神话软件随想录C程序设计语言C++ PrimerC++程序设计语言C++沉思录Effective C++More Effective C++Java编程思想STL源码剖析设计模式设计原本程序员修炼之道离散数学及其应用计算机程序的构造和解释深入理解计算机系统架构之美编程珠玑黑客与画家代码之美UNIX编程艺术人件编程之美C和指针C陷阱与缺陷C专家编程C++ Primer PlusC++编程思想Essential C++C++标准程序库具体数学深入浅出MFC持续更新,待加链接中。。算法艺术与信息学竞赛 阅读全文

posted @ 2012-03-27 19:02 c语言源码 阅读(156) 评论(0) 推荐(0)

二分法简单排序和查找
摘要:二分法排序算法思想简单描述: 在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们 中间的那个元素比,如果小,则对前半再进行折半,否则对后半 进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间 的所有元素后移,再把第i个元素放在目标位置上。直接看代码。 public static void DichotomySort(int[] array) { for (int i = 0; i < array.Length; i++) { int start = 0; ... 阅读全文

posted @ 2012-03-27 16:56 c语言源码 阅读(1161) 评论(0) 推荐(0)

“流浪”的日子
摘要:到今天我们离开机房已经两周多了,来说说这两周的生活。 我这样问自己:“你应该过得很好吧,周末不用去上课,可以睡到自然醒。周一到周五,上完了自己的专业课,就可以想干什么就干什么了,可以去睡觉、玩游戏、打篮球,都行啊!” 可是事实呢!自己过得却是那么的不开心,感觉自己好空虚。自己不是在想怎么玩,而是绞尽脑汁在想怎么可以多学点东西,来让自己觉得充实一些,让自己对得起每天的那几个馒头。 学习在“流浪”的日子 在离开机房后,自己因为也没有笔记本,就向七期借了一本关于UML的书,是讲UML在统一过程中各个阶段的应用。因为感觉自己没有做过什么大的项目,经验也很少,自己对UML的理解也不是很深... 阅读全文

posted @ 2012-03-26 19:45 c语言源码 阅读(304) 评论(0) 推荐(0)

读书笔记22:职责链模式
摘要:1、定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到对象处理它为止。 相信大家都写过if...else或者switch,当条件很多时需要写上数十行代码。如果要修改某些条件或者处理过程,就又要不断地修改这个牛叉的分支语句。这时我们可以采用职责链模式,它是将许多请求的分支或者步骤都独立出来。然后每个独立出来的部分,如果你是最终的处理那么就直接处理并结束,如果不是,那么就连接下一个处理步骤。这样就形成一个处理请求的链条。2、角色Handler——处理请求的接口。CreateHandler——实现处理请示的接口的类。它可以 阅读全文

posted @ 2012-03-26 16:53 c语言源码 阅读(208) 评论(0) 推荐(0)

冒泡和快速排序
摘要:也没专门去研究过排序。只是平常用过这两种和这两种的变形:冒泡和快速。收录一下用的时候直接Copy就OK。 public class Method { public static void QuickSort(List<int> arrays, int low, int high) { int i = low; int j = high; if (low < high) { int key = arrays[low]; ... 阅读全文

posted @ 2012-03-25 16:30 c语言源码 阅读(168) 评论(0) 推荐(0)

BOJ 385
摘要:Problem C. VaccineDescriptionOn Christmas Eve, 2029, the unidentified "Apocalypse Virus" spreads andplunges JA into a state of emergency in a chaos known as the "LostChristmas" incident. An international organization known as the GHQintervenes with martial law and restores order 阅读全文

posted @ 2012-03-25 13:30 c语言源码 阅读(277) 评论(0) 推荐(0)

poj 1845
摘要:大致题意:求A^B的所有约数(即因子)之和,并对其取模 9901再输出。解题思路:要求有较强数学思维的题应用定理主要有三个:要求有较强数学思维的题应用定理主要有三个:(1) 整数的唯一分解定理:任意正整数都有且只有一种方式写出其素因子的乘积表达式。A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均为素数(2) 约数和公式:对于已经分解的整数A=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)有A的所有因子之和为S = (1+p1+p1^2+p1^3+...p1^k1) * (1+p2+p2^2+p2^3+….p2^k2) * (1+ 阅读全文

posted @ 2012-03-25 11:51 c语言源码 阅读(158) 评论(0) 推荐(0)

BOI 383
摘要:Problem A. Ponding WaterDescriptionThere is a strange building on planet VOID. It is made up of N*Mrectangular parallelepipeds on N*M grids, whose bottom surfaces are 1*1squares. Since heights of these rectangular parallelepipeds are different,they form a number of “holes” inside the building. After 阅读全文

posted @ 2012-03-24 22:28 c语言源码 阅读(169) 评论(0) 推荐(0)

HDU 4001 To Miss Our Children Time
摘要:一开始我一直想的是简单图论问题,构图SPFA求最长路,发现这样做有环不好处理。比如这组样例:21 1 1 01 1 1 0构图就会有环,不能直接SPFA,tarjan缩点的话应该可以做,但是代码量就太大了。可以这样去处理:bool cmp(block a,block b) { if(a.x!=b.x)return a.x<b.x; if(a.y!=b.y)return a.y<b.y; return a.d>b.d; } void build(){ //缩点,避免产生环 sort(x,x+n,cmp); int cnt=1; y[1]=x[0]; for(int i=1;i& 阅读全文

posted @ 2012-03-24 21:38 c语言源码 阅读(203) 评论(0) 推荐(0)

BOJ 396
摘要:Problem K. Alice's PianoDescriptionAlice has a piano which can plays nice music, but it's different from otherpianos. It has two rows of keys, and the method of playing it is also quitespecial. When Alice plays piano, she has to put her two hands on the leftsideof the two rows of keys respec 阅读全文

posted @ 2012-03-24 19:39 c语言源码 阅读(153) 评论(0) 推荐(0)

BOJ 394
摘要:Problem I. The Longest Sequence ofRectanglesDescriptionA rectangle is specified by a pair of coordinates (x1 , y1) and (x2 , y2)indicating its lower-left and upper-right corners (x1 <= x2 and y1 <= y2). Fora pair of rectangles, A = ((X_A1, Y_A1), (X_A2, Y_A2)) and B = ((X_B1, Y_B1),(X_B2, Y_B2 阅读全文

posted @ 2012-03-24 19:10 c语言源码 阅读(180) 评论(0) 推荐(0)

用心做软件—细节决定成败
摘要:软件是什么?也许在编程者的眼中这是自己智慧的结晶,是技术运用的成果。但是在用户的眼中呢,用户会在乎你到底用了多少高级的技术、用了什么前卫的技术吗?我想大部分用户是不会管的,无论你是C#做的,Java做的,C++还是C做的,你的系统是Windows还是Linux,android还是塞班。用户的眼中你的软件只是一件产品,那么既然是产品,就要有价值,要能为用户带来方便,能为用户解决问题。当今的互联网上,大家都靠“免费”的概念来赚钱。开发了很多免费的软件给用户使用,积累了用户量自然就能赚钱。譬如360,QQ、迅雷、还有许许多多这种模式的。那么这么多的软件产品,用户为什么一定要用你的产品呢?自然是看谁. 阅读全文

posted @ 2012-03-24 17:21 c语言源码 阅读(263) 评论(0) 推荐(0)

约瑟夫环,杀人游戏(静态循环链表实现)
摘要:觉得用静态循环链表最划算了。1、动态链表要动态分配,指针移来移去,释放指针等等,弄得很烦,容易出错。2、用循环链表是当然的了。// DS: 似循环静态链表 #include <iostream> #include <cstdio> //#include <cstdlib> using namespace std; int Kill_You( const int sum = 1, const int distance = 1, const int start = 1) { // 一共参加自杀的人数有 sum 个,每 distence 个人就杀一个,从第 sta 阅读全文

posted @ 2012-03-24 15:51 c语言源码 阅读(1901) 评论(0) 推荐(0)

说说VS2010中的插件
摘要:我想大家在用VS的时候,一定有觉得VS很别扭的地方。比如说,我们在用C#编程的时候,会为里面的{}和()感到特别的不舒服,也让我们的编程感到很不愉快。 不知道大家在用什么好用的插件,如果觉得不错的,可以提供给大家,我们一起学习! 我在这里说一下——Visual Assist 吧!大家对它的评论也是不错的。 它的功能很强大,我也是刚刚接触,有好多的功能还认识不清,我这里就当是抛砖引玉吧。 自动添加括号:只要敲上一个左括号(,就会自动加上一个右括号(如果是不需要参数的,可以再打一个右括号,光标就会定位到括号的后面),并把光标定位到两个括号的中间,{}也是一样... 阅读全文

posted @ 2012-03-24 11:26 c语言源码 阅读(303) 评论(0) 推荐(0)

Codeforces Problem 161E - Polycarpus the Safecracker
摘要:先暴力打素数表,然后枚举5位数里(从高位到低位)有i位确定且为x的数有多少个。具体解某个数时暴力即可#include<stdio.h> #include<math.h> #include<vector> #include<string.h> using namespace std; bool vis[100010]; vector<int>dp[5][100010]; int k,l; int a[6][6]; int dfs(int now){ int i,j,x=0,sum=0; for(i=0;i<now;i++) x=x 阅读全文

posted @ 2012-03-23 23:23 c语言源码 阅读(177) 评论(0) 推荐(0)

C#获取磁盘空间信息的几个方法
摘要:今天本来想找一个在磁盘拷贝的过程中快速获取磁盘大小信息的方法,可惜这几个方法都不给力,拷贝中获取信息依然很慢。纠结。1、C#DriveInfo类获取DriveInfo driveinfo = new DriveInfo(@"C:\");driveinfo.AvailableFreeSpace;driveinfo.TotalSize;2、调用系统DLL方法 [DllImport("kernel32.dll")] public static extern bool GetDiskFreeSpaceEx( string lpDirector... 阅读全文

posted @ 2012-03-23 16:29 c语言源码 阅读(558) 评论(0) 推荐(0)

HDU 4106 Fruit Ninja
摘要:这个考费用流建图(时间跑到HDU目前的第四)是poj3680的加强版poj 3680 是区间对点的限制,而这道题,是点对区间的限制。如果选取取一个数,那么每个包含这个数且长度为 M的连续区间内可以选的数都要减少一个,对吧?转换模型!点变区间,区间变点!把区间离散化为 n - m + 1个部分,那么就有 n - m + 2 个点,left = max(1,i-m+1) ;right = min(i,tot-1)+1;分别是每个点对区间限制的左边界和右边界。#include<cstdio> #include<stdlib.h> #include<cstring> 阅读全文

posted @ 2012-03-23 00:23 c语言源码 阅读(232) 评论(0) 推荐(0)

C#中程序的退出
摘要:程序的关闭是很讲究的,处理的不好的话,将软件连续开启和关闭,当数次后在启动软件后程序会崩溃。或者程序退出很慢。细节决定成败,一款好的软件应该从各方面都要做严格地反复地推敲,力争做到无可挑剔。 有的程序员喜欢在关闭的时候让程序做一些事情,比如保存一些记录什么的,我觉得这样大可不必,因为这些会影响退出的时间,单一职责原则一再强调职责要单一,关闭程序就是关闭程序,不要掺杂其它动作。 当然仅仅一个关闭也有很多种方式的,比如窗体Close(),Application.Exit(),Application.ExitThread(),Enviroment.Exit(0),以及Process.GetCurr. 阅读全文

posted @ 2012-03-22 15:03 c语言源码 阅读(511) 评论(0) 推荐(0)

C#获取系统版本信息
摘要:直接贴代码: public class OSInfoMation { public static string OSBit() { try { ConnectionOptions oConn = new ConnectionOptions(); System.Management.ManagementScope managementScope = new System.Management.ManagementScope("\\\\localhost", o... 阅读全文

posted @ 2012-03-21 19:06 c语言源码 阅读(455) 评论(0) 推荐(0)

POJ 3680
摘要:建图很巧妙先离散化区间端点。从0->1,1->2,~~~~~n->n+1每条边容量为k,费用为0,对于每条线段,他的两个端点连边容量为1,费用-w然后跑一遍最小费用流算法正确性证明:如果两个区间没有交集,那么代表它们的边可以出现在同一增广路上,这一点显然。否则,它们就在不同的增广路上。每一个区间对应的边的容量都是1,这样,最后的流量就是被选出的两两有交集的区间的数量。受到(0,1,k,0)这条边的容量限制,这个值刚好不大于k.区间的权都是正的,因此选取的区间多多益善,所以流量必然最大。(对于每次选取的增广路中总存在一个区间,在每次增广所得区间都与这个区间有交集)#includ 阅读全文

posted @ 2012-03-21 18:11 c语言源码 阅读(185) 评论(0) 推荐(0)

共勉
摘要:年度述职终于结束了。不怎么觉得又过了一年了。有进步,也有不足。新一年度需要加油了,继续保持进步,当然也要改掉缺点。多学东西,多做事情,多写代码,不仅仅为了挣钱,也为了不虚度光阴。这就是生活,只有在忙忙碌碌中才体会到意义之所在。 最近浏览了下灌水的帖子,在帖子上老是看到有人说程序员的字眼是:猥琐,近视、穷,矮、没女朋友...TNN的腿,实在是太气愤了,谁说程序员是这样的呢,至少我身边的程序员和这些词都不沾边,大部分都是有房有车的人,而且还有好多都有股票的。我擦,发那些帖子的人心理真是太不正常了。 阅读全文

posted @ 2012-03-20 20:04 c语言源码 阅读(146) 评论(0) 推荐(0)

输出1到n位之间的所有数字
摘要:题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。分析:这是一道很有意思的题目。看起来很简单,其实里面却有不少的玄机。void Print1ToMaxOfNDigits_1(int n) { // calculate 10^n int number = 1; int i = 0; while(i++ < n) number *= 10; // print from 1 to (10^n - 1) for(i = 1; i < number; ++i)... 阅读全文

posted @ 2012-03-20 17:51 c语言源码 阅读(2123) 评论(0) 推荐(0)

win7打开chm文件问题解决之道
摘要:非常实用,原文地址:http://blog.163.com/wxdl_1029/blog/static/446909882010223111153301/我今天遇到了个非常棘手的问题,想看看资料,却打不开chm帮助文件。我装的是64位win7,打开chm文件时,系统提示我安全问题,强行打开,却无法显示内容,得到的提示是“该页导航被取消”,郁闷啊,头痛啊,怎么办啊,急急如火令……只有找Google兄弟帮忙了,一搜,一大堆。看了看,挺麻烦,要修改注册表,如不慎,将崩溃。完了,这难哈。不过,没办法,还要解决问题啊,工作不等人的。还好,经过我的不懈努力,加上我的聪明才智,最后找到了最简单最有效解决方法 阅读全文

posted @ 2012-03-20 09:15 c语言源码 阅读(620) 评论(0) 推荐(0)

KM算法理解
摘要:转自http://www.byvoid.com/blog/match-km/[二分图带权匹配与最佳匹配]什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和最大或最小。而二分图的最佳匹配则一定为完备匹配,在此基础上,才要求匹配的边权值之和最大或最小。二分图的带权匹配与最佳匹配不等价,也不互相包含。我们可以使用KM算法实现求二分图的最佳匹配。方法我不再赘述,可以参考tianyi的讲解。KM算法可以实现为O(N^3)。[KM算法的几种转化]KM算法是求最大权完备匹配,如果要求最小权完备匹配怎么办?方法很简单,只需将所有的边权值取其相反数,求最大权完备匹配,匹配的值再 阅读全文

posted @ 2012-03-19 21:13 c语言源码 阅读(951) 评论(0) 推荐(0)

读书笔记21:解释器模式
摘要:1、定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。该模式很好理解就是,目的就是解释。比如说世界上的各个地区和国家的汉字各不相同,但是需要表达的意思是相同的。同样描述吃饭的,中国叫吃饭,老外叫Eat...所以解释器模式是指,在程序中,一些符号或字符等需要在特定的条件下解释成这样,在另一情况下解释成那样。2、角色这个模式角色就一个解释器,AbstractExpression——它的参数是需要解释的内容。3、模型抽象的解释操作类。 public abstract class AbstractExpression { p... 阅读全文

posted @ 2012-03-19 15:49 c语言源码 阅读(225) 评论(0) 推荐(0)

求1-n直接1出现的次数
摘要:题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。分析:这是一道广为流传的google面试题。用最直观的方法求解并不是很难,但遗憾的是效率不是很高;而要得出一个效率较高的算法,需要比较强的分析能力,并不是件很容易的事情。当然,google的面试题中简单的也没有几道。首先我们来看最直观的方法,分别求得1到n中每个整数中1出现的次数。而求一个整数的十进制表示中1出现的次数,就和本面试题系列的第22题很相像了。我们每次判断整数的个位数字是不是1。如果这个数字大于10,除以10之后再判断个位数字 阅读全文

posted @ 2012-03-18 17:49 c语言源码 阅读(581) 评论(0) 推荐(0)

为什么要工作?
摘要:很多时候我常常在反思,我为什么工作? 背井离乡,离家数千里;上班是起早贪黑,有时候如果在公司就餐和午休,那就达到了白天见不到太阳的境界。这是为什么呢?是为了钱?好像也不是,工资也不是很高;为了生存?貌似也不是,我是村儿里人,钱没有,但是不可能没饭吃,因为家家都有土地,如果我去种地,那这辈子衣食肯定是无忧的。不知道原因,只好用一下反证法问自己,假如我目前不工作了会怎么样? 结合自身的资源结论如下: 1、回家当农民,与土地,牛羊等打交道。生活怡然自得,可是钱不多。大家会认为读书无用,读了二十几年的书,结果种地。——不被尊重 2、既然种地,那么也就没有闲情玩电脑、上网、看新闻、看八卦、关注国际形势. 阅读全文

posted @ 2012-03-18 16:27 c语言源码 阅读(173) 评论(0) 推荐(0)

寻找丑数
摘要:题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整除,就除以连续5。如果最后我们得到的是1,那么这个数就是丑数,否则不是。基于前面的分析,我们可以写出如下的函数来判断 阅读全文

posted @ 2012-03-18 16:11 c语言源码 阅读(4411) 评论(0) 推荐(1)

八皇后问题
摘要:package quess;/*** 由于八个皇后的任意两个不能处在同一行,那么这肯定是每一个皇后占据一行。* 于是我们可以定义一个数组ColumnIndex[8],数组中第i个数字表示位于第i行的皇后的列号。* 先把ColumnIndex的八个数字分别用0-7初始化,接下来我们要做的事情就是对数组ColumnIndex做全排列。* 由于我们是用不同的数字初始化数组中的数字,因此任意两个皇后肯定不同列。* 我们只需要判断得到的每一个排列对应的八个皇后是不是在同一对角斜线上,* 也就是数组的两个下标i和j,是不是i-j==ColumnIndex[i]-Column[j]或者j-i==Column 阅读全文

posted @ 2012-03-18 13:43 c语言源码 阅读(291) 评论(0) 推荐(0)

时间复杂度为O(n)的排序
摘要:题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速排序等等。这些排序的算法,要么是O(n2)的,要么是O(nlogn)的。可是这道题竟然要求是O(n)的,这里面到底有什么玄机呢?题目特别强调是对一个公司的员工的年龄作排序。员工的数目虽然有几万人,但这几万员工的年龄却只有几十种可能。上班早的人一般也要等到将近二十岁才上班,一般人再晚到了六七十岁也不得不退休。由于年龄总共只有几十种可能,我们可以很方便地统计出每一个年龄里有多少名员工 阅读全文

posted @ 2012-03-18 11:17 c语言源码 阅读(958) 评论(0) 推荐(0)

求数对的最大值
摘要:package maxD_value;/*** 题目:在数组中,数字减去它右边的数字得到一个数对之差。* 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。**/public class Test {//下面这个方法是从后往前遍历一遍,找出最小的值,然后用前面的值减去最小的值,并找出遍历中的最大数,则得到了结果。public static int maxValue_MethodOne(int array[]){int max=0,D_value;int n = array.length;int min = ar 阅读全文

posted @ 2012-03-17 23:43 c语言源码 阅读(305) 评论(0) 推荐(0)

写程序是为了解决问题
摘要:对于一个专业的程序员来说,写代码不仅仅是写代码,而是在生产产品。仅仅是为了写代码而写代码那是在校学生。 程序是产品吗?只要你想靠软件赚钱,这就是一个产品。既然是产品,那么你写的代码最终是要解决问题。套用小平同志的一句话:不管高手还是菜鸟,只要能能解决问题就是好程序员。所以,作为一名程序员在学习编程技能的同时,要注重积累自己解决问题的经验。当然如果是一个高手,那么他肯定具备解决问题的能力,可是这种能力是否发挥出来就不一定了。 所以我们在写程序的时候,不要过于纠结程序的本身,而是通过深入研究程序的本身来更好的解决问题。 阅读全文

posted @ 2012-03-17 16:19 c语言源码 阅读(158) 评论(0) 推荐(0)

求两个数的和(不用+-*/)
摘要:题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。 分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。 看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十进制的加法的,比如是如何得出5+17=22这个结果的。实际上,我们可以分成三步的:第一步只做各位相加不进位,此时相加的结果是12(个位数5和7相加不要进位是2,十位数0和1相加结果是1);第二步做进位,5+7中有进位 阅读全文

posted @ 2012-03-17 15:05 c语言源码 阅读(1390) 评论(0) 推荐(0)

Codeforces Round #112 (Div. 2) C Another Problem on Strings
摘要:codeforces上的很多题都需要好的想法才能做。#include<iostream> #define maxn 10000005 using namespace std; int n,i,k,s[maxn],sum[maxn],a[maxn]; // a[i]记录第i个是0或1,s[i]记录第前i个有几个1,sum[i]表示从头开始产生i个1的方法数 char st[maxn]; long long ans; int main() { cin >> k >> st; for(i=1;st[i-1]!=0;++i) a[i]=st[i-1]-48,s[i] 阅读全文

posted @ 2012-03-17 13:17 c语言源码 阅读(186) 评论(0) 推荐(0)

程序员有趣的面试智力题
摘要:偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开关控制,三架飞机环游世界,用火柴和两根绳子测量45分钟之类的题目,火星得已经可以考古了,这里就不再说了。 1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么?答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地. 阅读全文

posted @ 2012-03-17 12:00 c语言源码 阅读(430) 评论(0) 推荐(0)

求数组中第K大数
摘要:问题:有一个大小为n的数组A[0,1,2,…,n-1],求其中第k大的数。该问题是一个经典的问题,在《算法导论》中被作为单独的一节提出,而且其解决方法很好的利用了分治的思想,将时间复杂度控制在了O(n),这多少出乎我们的意料,此处暂且不表。该问题还可以变形为:有一个大小为 n的数组A[0,1,2,…,n-1],求其中前k大的数。一字之差,原问题是“第k大”,变形的问题是“前k大”,但是平均时间复杂度却都可以控制在O(n),这不由得让人暗暗称奇。我们先分析原问题:有一个大小为 n的数组A[0,1,2,…,n-1],求其中第k大的数。我们先取特例,令k=1,那么就是取最大的数,只要扫描一遍数组就可 阅读全文

posted @ 2012-03-16 23:25 c语言源码 阅读(1615) 评论(0) 推荐(0)

变量转换(不使用中间变量)
摘要:第一种方法:a=a+b;b=a-b;a=a-b;代码如下:·········10········20········30········40········50·· 阅读全文

posted @ 2012-03-16 21:59 c语言源码 阅读(169) 评论(0) 推荐(0)

面试题目
摘要:1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(文字描述),完成代码,并分析你算法的时间复杂度。答:[cpp]view plaincopyintfunc(unsignedintn){if(n==1)return0;if(n%2==0)return1+func(n/2);intx= 阅读全文

posted @ 2012-03-16 21:29 c语言源码 阅读(233) 评论(0) 推荐(0)

机房收费系统总结(一)——事务
摘要:前言:首先介绍一下机房收费系统需求机房收费系统是为我们学校管理机房做的一个小MIS。因为,现在大学的英语——《新视野大学英语》是网上学习的,而且用的是本学校的内网服务器,还有一些大学要参加相应的计算机等级考试,所以,希望学校的机房可以对本学校的学生开放(在指定的时间,如果晚上、周末等)。但是,学校如果开放机房的话,那么一定会投入相应的人力与物力(顺便赚点钱,其实大家心里都明白……),所以,希望学生有偿上机,也就是对学生上机进行收费管理,并同时记录相应的上机记录等。该系统可以实现的功能包括、学生注册、学生充值、学生退卡、学生上机、下机管理、学生信息维护、报表统计数据等。因为,此系统所用的磁卡,是 阅读全文

posted @ 2012-03-13 12:53 c语言源码 阅读(294) 评论(0) 推荐(0)

说一个Word中的多级列表
摘要:今天上午本来是想一边再调试一下程序,然后开始写机房收费系统的文档的。然后在Word中花了好长的时间。既然花了这么长的时间来弄一个东西,同时也学到不少的东西,就此写下来,希望给有类似问题的朋友提供一点方便。 问题,就是关于Word中的多级列表的问题。 先上一张效果图: 首先说一下,我开始的时候是怎么想的,是一条错误的道路!我本来觉得通过样式就可以解决这个问题的,因为在样式里面有项目编号么。于是就开始了各种的测试,结果就是第一个样式自己的编号是连续,和其它的样式不能产生联系。 后来发现这条路不能,于是就用多级列表了。就不说错误了,直接... 阅读全文

posted @ 2012-03-12 11:34 c语言源码 阅读(231) 评论(0) 推荐(0)

indent 用法
摘要:indent是一个很有用的c源代码对齐工具。一般大家有自己喜欢的风格,可以根据需要来设定indent的风格。Linux Style是:-nbad -bap -nbc -bbo -hnl -br -brs -c33 -cd33 -ncdb -ce -ci4-cli0 -d0 -di1 -nfc1 -i8 -ip0 -l80 -lp -npcs -nprs -npsl -sai -saf -saw-ncs -nsc -sob -nfca -cp33 -ss -ts8 -il1我采用的是类Linux Style:indent -bad -bap -nbc -bbo -hnl -br -brs -c3 阅读全文

posted @ 2012-03-10 23:51 c语言源码 阅读(658) 评论(0) 推荐(0)

Extjs下拉多选框
摘要:var stateCombo = new Ext.form.ComboBox({ store : new Ext.data.SimpleStore({fields : ["value", "text"],data : [['0','有效'],['1','无效']]}), displayField:'text', //store也可以动态的去加载,大家自己改一下就OK valueField:'value', mode : 'local', id 阅读全文

posted @ 2012-03-09 09:43 c语言源码 阅读(271) 评论(0) 推荐(0)

最近有点忙
摘要:最近明显感觉好忙,还感觉有点乱,这样不行,学习效率明显不好,要自己梳理一下了。 这是开学第三周了,看一下这三周的轨迹,发现自己有必要制订一个计划了。现在的我,徘徊在软件、网络、英语之间。为什么这么说呢,听我细细道来。 现在有一个全国的网络技术大赛,是H3C的,针对全国的在校大学开展的一项活动。我们来分析一下这个活动啊,当然,我们可以想到做为活动的举办方,也就H3C目的很明显,就是想通过这个活动,给自己选拔一些技术人才。当然,作为大学生的我们呢,尤其是计算机网络专业的大学生,这是一个不错的学习与锻炼的机会,也可以为自己将来的人生规划提供一条途径。 作为计算机本科的网络专业,本... 阅读全文

posted @ 2012-03-08 18:59 c语言源码 阅读(168) 评论(0) 推荐(0)

Ackermann Function C++实现
摘要:Ackermann Function 是用递归方法定义的,定义如下:(有的资料上阿克曼函数的定义中 m, n 的位置调换了,相应的函数式要对称性地变化,注意取值。)A: N^2 -> N 它的部分函数值如下:C++ 代码如下:#include <iostream> #include <cstdio> using namespace std; __int64 Ackermann (int m, int n) { if(m == 0) return (n + 1); if( m > 0 && n == 0 ) return Ackermann(m 阅读全文

posted @ 2012-03-07 17:34 c语言源码 阅读(716) 评论(0) 推荐(0)

Android模拟器
摘要:早就想试试Android了,可双舍不得花钱买手机,那怎么办呢? Google 使用自己的 SDK 发布了一款 Android 模拟器以方便开发者在手机上运行之前先在模拟器上测试应用。我们可以使用它在电脑上运行 Android。 现在有电脑么,有信息技术,网上提供了Android模拟器,我们可以过一把Android的瘾了。 在安装Android之前要先安装Java JDK 官网下载地址:点击打开链接 然后安装Android SDK 官网下载地址:点击打开链接 在网上这方面的教程也有很多: http://anz... 阅读全文

posted @ 2012-03-07 10:11 c语言源码 阅读(349) 评论(0) 推荐(0)

两个大整数的乘法
摘要:和上面一篇的思想是一样的,就是用数组来进行保存数据,这里比上面的复杂一点,因为他要记录每一次乘后的结果,在后一次乘的过程中还要加上原来的那个数。程序源码:package dashuchengfa;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str1 = sc.next();String str2 = sc.next();int max = 100,i,j;int num[] = new 阅读全文

posted @ 2012-03-05 23:37 c语言源码 阅读(217) 评论(0) 推荐(0)

大数阶乘的求法
摘要:首先是定义一个数组,然后用数组的每一个元素来记录运算结果的每一个,从个位数字开始算起,这样可以很好地解决进位的问题。程序源代码:import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int i,j,n,max = 1000; int num[] = new int[max]; num[0] = 1; n = sc.nextInt(); for( i=2;i<=n;i++) { int c = 0; 阅读全文

posted @ 2012-03-05 22:25 c语言源码 阅读(236) 评论(0) 推荐(0)

对三大数学软件 Mathematica 、Maple 、MATLAB 的小测试比较
摘要:今天一时兴起,突然想试试几个数学软件的功能,就测试了一个不定积分,看看哪个算得最好,最简洁。计算:以下计算结果我都一一验算了。1).先在Mathematica(我用的是在线的wolframalpha)中计算,结果是:2).然后是在Maple 中计算,结果是3).最后再用MATLAB ,结果是当然了,被积函数是可以变形的 ,比如把被积函数通过三角变换化一下之后积分就可以写成这样:再用Mathematica计算,结果就不一样了:好了,从计算结果比较看来,我认为在这方面 Mathematica 最智能,不过都是电脑在算,人是活的,换种给出的形式得到的结果可能就会不同,正如最后的例子所示。今天就写到. 阅读全文

posted @ 2012-03-05 16:54 c语言源码 阅读(378) 评论(0) 推荐(0)

计算机网络——网络层(三)子网掩码与DNS
摘要:一、子网掩码 我们可以想到,如果单靠网络号来划分子网的话,那么,我们觉得子网还是大,比如说我想再细分一下网络,这时就用到了子网掩码的概念。 举个例子吧,我们一般的子网掩码都是自动加上去了,如果再分就要修改子网掩码了比如说我想要202.117.23.5 202.117.23.10 202.117.23.15 在不同的子网我就加上一个子网掩码:255.255.255.242就可以做到,基础知识,我也就不再展开怎么计算了。 二、DNS 我在前面的博文中也有介绍,我们上网,其实是通过IP地址来访问其它主机的。可以IP地址是一串的数字,那样就太难记了,所以... 阅读全文

posted @ 2012-03-04 11:40 c语言源码 阅读(260) 评论(0) 推荐(0)

计算机网络—网络层(三)路由环境
摘要:一、路由表 同一子网通讯:我们知道了,如果网络号相同(先不考虑子网掩码),那么主机就在同一个网络,用广播形式进行通讯,那么,如果不同子网通讯呢。不同子网进行通讯,就需要路由了先介绍下几乎每个路由表都有的内容吧:最终目的 方向 尺度(经过的路由数,单位跳) 最终目的:要发到哪个网络。方向:通过哪个地址出去 举例:路由器WAN口地址:10.0.0.1 LAN口地址:192.168.1.5 因为,两个地址是直接连在了路由上,那么,会在路由表中自动生成一条直连路由。 缺省路由:我们在配置IP的时候,如果在网关会添上一个路由的IP地址,那么,会自动生成一条缺省路... 阅读全文

posted @ 2012-03-04 11:20 c语言源码 阅读(176) 评论(0) 推荐(0)

计算机网络——网络层(一)
摘要:一、OSI第三层:网络层 目的:完成网络之间的数据传输任务:寻找网络地址:网络寻址 完成网络间数据传输——交换传输 路由选择算法 分析:我记得在前面的博文中写到,在局域网中传输,唯一地址是MAC地址,在Internet上的唯一地址是IP地址,不用MAC地址,一原因是它的传输是广播形式的,还有就是,不能达到分层的效果(比如说我想把一个网络进行细分的话,用MAC地址是做不到的,而IP地址就很好地解决了这个问题,我会在后面的博文中给出详解)二、IP地址组成和IP地址类我们可以看到,比如说A类和B类地址,可用的主机数很多,这一般是给大型网络准备的。我们可以... 阅读全文

posted @ 2012-03-04 09:34 c语言源码 阅读(272) 评论(0) 推荐(0)

计算机网络基础——数据链路层
摘要:OSI第二层:数据链路层 这一层其实很特殊,因为数据链路层由两个子层组成:逻辑链路层(LLC)、媒体访问层(MAC)1、MAC子层目的:完成发送方占用信道的问题任务:将上层传下来的数据封装成帧进行发送(接收时进行相反的过程,将帧拆卸) 实现和维护MAC协议 比特差错检测(1)占用信道的方法争用Contention:以太网采用的方法令牌Token passing:令牌环网采用的方法(被以太网取代)轮询Polling(比如:SNMP简单网络管理协议,一点到多点通讯)(2)MAC子层寻址 我们都知道,在Internet网络上,可以说有一个唯一地址,那就是IP地址。其实我们更加熟悉的往往是域... 阅读全文

posted @ 2012-03-02 21:18 c语言源码 阅读(749) 评论(0) 推荐(0)

计算机网络——物理层
摘要:一、相关参数1、带宽bps-bits/secT3(44.736Mbps)T1(1.544Mbps)长度与带宽成反比注意:我们这里的带宽和文件的大小不同。举个我们生活中的例子,我们现在家里上网,很多采用的都是ADSL上网,一般带宽是2M、4M等,那么,怎么我们在网上下载东西的时候,显示不到2M、4M的带宽呢?原因很,因为这里面涉及的单位是byte而不是bit,我们都知道,1byte=8bit,所以说当下载东西的时候,确切地说将近带宽/8。2、延迟这也是衡量一个网络要的参数。其实有的网络带宽很大,但是用起来确实不怎么样,因为网络延迟很大。我们可以简单地测试一下自己的网络延迟,比如说,我们进入我们电 阅读全文

posted @ 2012-03-02 20:31 c语言源码 阅读(232) 评论(0) 推荐(0)

OSI计算机网络七层模型
摘要:前言首先,我想先说一下关于网络分类的问题。因为,有一些同学有错误的认识。我们都知道根据不同的分类方式,可以把网络分为不同的类。其实,这些类的由来是有原因的,那就是用户的需求。任何一项技术的发展都是由需求开始的,然后由理论技术变为技术产品。首先,人们想通过一种方式把各台计算机上的资源(硬件资源、软件资源等等)共享,于是就产生了我们现在所说的局域网LAN(Local Area NetWork)(但是,这种网络有一定的限制,比如说它的覆盖范围、能提供的端口等)。当人们有想把更多、更远的地方的计算机进行联网的时候,接着就有了今天的城域网(Metropolitan Area NetWork)、广域网WA 阅读全文

posted @ 2012-03-02 20:08 c语言源码 阅读(348) 评论(0) 推荐(0)

java线程系列---Runnable和Thread的区别
摘要:在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限, 下面看例子: package org.thread.demo; class MyThread extends Thread{ private String name; public MyThread(String name) { super(); this.name = name; } public vo... 阅读全文

posted @ 2012-03-01 11:15 c语言源码 阅读(292) 评论(0) 推荐(0)

导航