自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 KMP 算法 自己的一些理解

KMP算法是一种高效的字符串匹配算法,比较难以理解,下面只是我的一点个人理解,以后有更深入的理解会陆续加进去的。1.     比较简单的一种字符串匹配算法StringS; String T;S是待匹配串,T是匹配串,又称模式串。所以字符串匹配又称模式匹配。S: ABABCABCACBABCBABCACT: 简单的方法,一个循环即可,但是时间复杂度确实o(n*n)。int Index_KMP(char* S, char* T, int pos) {int i=pos,j=1;while

2011-03-29 15:53:00 522

原创 子数列 acm at BUPT 1004

<br />这个问题:<br /> <br />Description<br />现在有一个数列,需要你求得该数列满足下述要求的最长子数列。子数列要求:这个子数列可以被分成前后两个部分,且两部分共同拥有一个数列项(即前一部分的最后一个数列项和后一部分的第一个数列项是同一个数列项);子数列的前一部分各项要严格递增,后一部分各项要严格递减。例如,数列 1 4 6 5 2 1 可以分成 1 4 6 和 6 5 2 1 这两部分。他们都含有数列项 6 ,且前者各项严格递增,后者各项严格递减。<br /><br />

2011-03-28 19:40:00 877

原创 N后互不攻杀问题

题目:在n * n的国际象棋盘上放置n个皇后,使它们彼此互相不攻杀。皇后攻杀条件:处于同一行,或同一列,或同一斜线的皇后彼此攻杀。试给出全部方案。我发现我和老师的思想老师不在一个方向。上次的和质问题,我把代码都写在main()函数里面,接过来时写了很多函数。这次的N后问题,我写了很多函数,老师却都写在main()里面了。下面是我写的:#include #define N 5 // N 为 N*N的矩阵typedef struct { int coloum;}Work;Work a

2011-03-28 12:16:00 665

原创 相邻两方格内的两个整数之和为质数-经典算法详解

为什么要详解?主要是因为我自己看的时候都花了很长时间才明白。题目:在9(3 x 3)个方格的方阵中填入数字1到N(N>=10)内的9个数字,使所有相邻两方格内的两个整数之和为质数(素数),试求出所有满足要求的数字填充方案。先画图:(3*3表格)012345678由于一维数组更好处理,所以变换成一维数组a[10]:0123456789数据结构 1)int checkM[9][3]={{-1},{0,-1},{1,-1},                 {0,-1},{1,3,-1},{2,4,-1},   

2011-03-27 16:28:00 4123 1

原创 后序遍历二叉树非递归

<br />看来老师的程序也不对啊哈哈~<br /> <br />这个程序会有问题的<br /> <br />void VisitTree_LRD(BinTNode *t){ struct { BinTNode *ptr; char tag; } stack[100]; int top; BinTNode *p; if( t==NULL ) return; top = 0; p = t; while ( p != NULL ) { whil

2011-03-26 18:14:00 551

原创 背包问题的非递归解法

老师写的太乱了,真是看晕了,改天再看。#include "stdio.h"#define LEN 5#define S0 10#define N0 5typedef struct { int s; int n; int job;} KNAPTP ;int w[LEN+1] = {0,1,4,4,5,7};KNAPTP stack[100];int top;/*===================*/void ps(){ i

2011-03-26 17:40:00 1200

原创 Huffman解码

<br />main() 函数是瞎写的。。。<br /> <br />#include <stdio.h>typedef struct _HuffmanNode { char charactor; int weight; int parent,left,right; // 为什么要用unsigned呢? }HuffmanNode,*HuffmanTree; typedef char** HuffmanCode; void recognizeANe

2011-03-26 16:36:00 818

原创 Huffman 编解码--这回是正常树~

<br />严蔚敏教材上的Huffman coding<br /> <br />稍微有点改动 <br /> <br />// Huffman 编码#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct _HuffmanNode { int weight; int parent,left,right; // 为什么要用unsigned呢?}HuffmanNode,*HuffmanTree;

2011-03-26 16:08:00 804

原创 递归实现背包问题

<br />*背包1,递归的背包无法改成循环<br /> <br />#include "stdio.h"#define LEN 5#define S0 8#define N0 5int w[LEN+1] = {0,1,2,3,4,5};/*=================int knap(int s, int n){ if ( s==0 ) return(1); else if ( s<0 || ( s>0 && n<1 ) ) return(0);

2011-03-25 13:59:00 5980

原创 DP的学习和使用

<br />1. 如果自顶向下的程序不好设计的话,就变成自底向上的好了<br /> <br />/* goso : Dynamic Programming :: 数塔的问题 思想就是不断的上溯,自底向上求解 如果自顶向下求解的话非常麻烦*/#include <stdio.h>#define MAX_ARRAY 0xffmain() { int i=0,j=0,t=0; int a[MAX_ARRAY][MAX_ARRAY] = {0}; while (scanf(

2011-03-24 22:57:00 884

原创 超时的程序的其他种种

<br />程序能转,但是超时了,真是悲剧<br /> <br />先记录一下<br /> <br />/* *Input *输入数据分为名单和询问两部分。 *首先是名单部分,第一行是一个正整数 n (n<=500000), 表示名单中的人数。 下面 n 行, 每一行有一个由大写字母A-Z和小写字母a-z组成的字符串,代表名单中的姓名。 *然后是询问部分,第一行是一个正整数 m (m<=10000), 表示询问的次数。 下面 m 行, 每一行有一个由大写字母A-Z和小写字母a-z组成

2011-03-24 17:49:00 576

原创 基于栈的括号配对

<br /> <br /> <br />/* 基于栈的括号配对 */#include <stdio.h>#define MAX_STRING 0xff#define MAX_STACK 0xffmain() { const char match_tab[3][2] = {{'{','}'}, {'[',']'}, {'(',')'}}; int i=0,len=0,TOP=-1,flag=0; int stk[MAX_STACK] = {0}; char s[MAX_

2011-03-24 11:36:00 670

原创 非递归的快排

<br />/* 快排的非递归算法 *//* 使用队列的任务分解方法 *//* Key : 队列如何快速实现? */#include <stdio.h>#include <queue.h>typedef struct _TASK_QSORT { int* list; int low; int high;}QsTask; int Partition(int a[], int low, int high) { int pivot = a[low]; whi

2011-03-23 23:04:00 2627 3

原创 转换成k进制

<br />#include <stdio.h>#define MAX_ARRAY 0x00001000main() { int k=0,n=0,i=0; char a[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 匹配字符串 char transfered[MAX_ARRAY] = {0}; scanf("%d %d",&k,&n); for (i=0; n; ++i) { transfered[i] = a[n %

2011-03-23 22:00:00 952

原创 穷举法的另外一些题目

将A,B,C,D,E,F,G,H这8个变量排成如图所示的大梯形和4个小梯形,这8个变量分别取[1……8]上的整数且互不相等。求使如图所示的梯形和四个小梯形四个角上的变量之和全相等的所有解。       1+4+6+7=1+4+5+8=5+4+3+6=3+2+8+5=7+2+8+1     大梯形四角和                 4个小梯形四角和方法1:#include main() { int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0; int total[4]

2011-03-23 20:38:00 1035

原创 求100!中的末尾的零的个数

<br />当然最好不要把100!算出来。不过我算出来了是:100<br /> <br />93326215443944152681699238856266700490715968264381621468592963895217599993229915<br />608941463976156518286253697920827223758251185210916864000000000000000000000000<br /> <br />Press any key to continue<br /> <

2011-03-23 17:49:00 1410

原创 穷举法 举例

<br />1元的硬币分成cents 1,2,5<br /> <br />第一个比较好,省一层循环,速度快,第二个三重循环,太慢<br /> <br />#include "stdio.h"#include "stdlib.h"void main(){ int sum, five, two, one, line; sum = 0; line=0; for( five=0; five<100/5; five++ ) for( two=0; two<=(100-5*five

2011-03-23 17:37:00 805

原创 求大整数的阶乘

<br />/* 采用大整数乘法计算阶乘 *//* 其实我一直想用计算机组成原理中的方法计算乘除会比较好 */#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXN 0x00001000int* Long_Nxt(int k, int* res) { int* resbkp,i,j,kk,m,n = 0,r,carry=0; m = res[0]; kk=k;while(kk) {++n;k

2011-03-23 16:33:00 564

原创 迭代法求分数数列之和 小母牛繁殖问题

主要是为了熟悉一下迭代法。程序本身不难。使用迭代法函数是记得传入的应该是引用或者指针,否则回来就没了。/* 求分数之和 */#include int gcd(long s1,long s2) { // 辗转相除法求最大公约数 int m = 0,n = 0,r = -1; m = (int)s2; n = (int)s1; while (r) { r = m % n; m = n; n = r; } return m;}void sumFib(in

2011-03-23 10:29:00 1502

原创 寻找最近共同祖先结点

<br />/* *寻找最近共同祖先结点 *方法1 : 从根开始,查找他的子树中是不是包含两个节点,分别向左右子树递归(层次遍历),知道某一节点找不到两颗子树中的一棵,那么 *其双亲结点就是最近共同祖先。 *方法2 : 首先预处理每个结点在树中的深度 下面是主要步骤 while( p所指结点 != q 所指结点 ) { if p所指结点较深 就将p指向它的父结点

2011-03-21 17:38:00 3923

原创 翻转字符串-goso笔试题

<br />/* 实现字符串翻转,例如: hello world,bye ---> bye,world hello*/#include <stdio.h>#include <string.h>#define max 128int main(void) { char input[max]; char split[max][max] = {('/0','/0')}; //如何全部初始化为0 ??? char other[max] = {'/0'}; //

2011-03-20 21:48:00 920 2

转载 别人写的Huffman树

<br />这是别人写的Huffman<br /> <br />比我的功能全点,主要是欣赏一下别人的内存分配方式,它使用的指针动态分配<br /> <br />#include <iostream.h> #include <string.h> /*哈夫曼编码示例程序作者:杨勇哈夫曼建树算法描述:1. 将所有权值分别构造一个只有一个结点的二叉树结点,将这些结点加入集合A(哈夫曼森林)2. 检查集合A成员的个数,如果为1,则算法结束,集合A中唯一的结点为哈夫曼树的根。3. 从集合

2011-03-19 18:38:00 2368 1

原创 会忘记,会过去

编程的时候发现神马冒泡泡算法,插入排序,快排序等等都忘了。不管当时学的多扎实,总是会忘的。就像单词背一遍一遍还是会忘。到底什么是人生?到底想要什么样的生活?我不知道,我会努力想。我会努力看。我会努力学。Dr. Dre – I Need A Doctor (feat. Eminem & Liz Rodrigues)ARE YOU THE ONE 你是他吗? 两首很不错,歌词记录一下。。Dr. Dre – I Need A Doctor (feat. Eminem & Liz Rodrigues)[Ch

2011-03-19 18:15:00 614

原创 Huffman编码

<br />很久没编程了,发现退步很大,尤其是存储空间的分配,总是感觉没有有头绪。过不两个星期应该就是复试了,希望到时候能找回状态。<br /> <br />写了个Huffman编码,不是很好,先放上吧。据说北邮这两年的最后一题都是Huffman编码,不过这个速度编程肯定是时间不够的,最后会被刷的。<br /> <br />为什么总是纠结于存储空间的分配?为什么?<br /> <br />到底是分配数组?<br /> <br />分配动态空间?<br /> <br />使用STL?<br /> <br />

2011-03-19 18:09:00 462

原创 写面经-考研之后2

<br />Red hat面试<br />说实话,我从来不觉得我能过RH的面试,因为Linux我虽然熟悉,但不是很好。因为平日shell用的不多。<br /> <br />早到了一个小时,大家都在打台球,嗯,氛围不错,很适合我哈哈<br /> <br />1h后 sophia来接我,给了我几份卷子,说先做做,给我一瓶水,很不错,心想外企果然人性化,其他地方没有给水喝的。<br /> <br />卷子全英文的,考的shell和QA很多,无奈很多只好编上。<br /> <br />1h后收卷,然后来了个QA E

2011-03-04 18:03:00 887

原创 考研啊考研

<br />我一向认为考研时最不靠谱的一件事,不过今天成绩下来,354,应该差不多,心里很高兴。<br /> <br />没有太多的喜悦,没有太多的慌张,仿佛是水到渠成的一件事。<br /> <br />做完姐姐跟我说了好久,从那时起我就放下了,所以不慌张,继续面试,面试。。。<br /> <br />不过现在可以准备复试了,6选4<br /> <br />我准备选 软件工程、数据库、计算机体系结构、编译原理。<br /> <br />相信我!过了初试,复试就不准备被刷下!!

2011-03-04 17:48:00 644 1

原创 写面经-考研之后

2011年的雪来的特别晚。考研结束的那天异常的冷,但是还是没下雪。我们走在回去的路上,想着上午的数学,全场溃败的感觉真是不爽,于是考完之后也没写什么考经,同学聚会完了直接回去睡觉了。树哥说:森哥 说句不该说的,考不上怎么办我说:找工作吧树哥说:来360吧。这是前话。今天正式收到了360的E-offer,里面的东西写得非常漂亮。我真想给漂亮的HR mm回封信说这是我这辈子第一封offer。但是后来想想还是算了。2011年1月 考完研的那几天 感觉还是相当不爽的。为什么呢?当时思路还是太狭窄了,想着考不上研怎么

2011-02-23 19:47:00 951

原创 LINK 2005 ERROR

<br />今天遇到了 LINK 2005 错误。搜了一下,还真有学问呢。遂转载于此。没来得及看完第一篇,就用第二篇的方法了。<br /><br />第一篇:<br />链接器都干了些什么?<br /><br />(http://www.cppblog.com/jacky2019/archive/2007/03/29/20891.html)<br />Posted on 2007-03-29 19:10 小熊 <br /><br /><br />目前项目在不停的增长,我想还是在它规模仍旧很小的时候把它的模块

2011-01-24 13:51:00 2429

转载 将中缀表达式转换成后缀表达式的三种方 法

1利用栈来实现 2利用语法树 3加括号法 上面的两种方法比较常用,并比较适合解答题的形式,若碰到的 是填空题,很多不太熟练算法的人往往就会轻言放弃(因为不能按 步给分,算半天有可能也得个零分)。在这里,本人提出一种简单的 称之为加括号的方法,它会让你在一些考试中大大受益。不 过,只适合不要求过程的填空、选择题之类。 加括号法就是先将待求的中缀表达式依次排开,再将每 一       步要计算的表达式加上括号,最后将每个运算符移到其所 在括号的外面,这样,从左到右扫描得到的序列去掉括号后就是后缀表达式。 例:将

2010-10-28 10:44:00 2716 2

原创 前缀 中缀 后缀 波兰式 逆波兰式

<br />【摘自Wikipedia】<br />解释<br />逆波兰记法中,操作符置于操作数的后面。例如表达“三加四”时,写作“3 4 +”,而不是“3 + 4”。如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波兰记法中写作“3 4 - 5 +”:先3减去4,再加上5。使用逆波兰记法的一个好处是不需要使用括号。例如中缀记法中“3 - 4 * 5”与“(3 - 4)*5”不相同,但后缀记法中前者写做“3 4 5 * -”,无歧义地表示“3 (4 5 *) −”

2010-10-28 10:28:00 1153

原创 非递归 中序 后序

#ifndef _BITREE_H#define _BITREE_H#include #include using namespace std;#include #include // 数组存储#define MAX_TREE_SIZE 100typedef char TreeType;typedef TreeType SqBiTree[MAX_TREE_SIZE];// 链表存储typedef struct BiTNode { TreeType data

2010-10-06 19:06:00 462

原创 二叉树 普通的 建立和遍历

<br />关于LevelOrderTraverse  本来不想用STL的  后来发现 自己写的那个没有模板功能 改起来太麻烦了  。。。<br />#ifndef _BITREE_H#define _BITREE_H#include <queue>using namespace std;#include <stdio.h>#include <stdlib.h>// 数组存储#define MAX_TREE_SIZE 100typedef char TreeType;ty

2010-10-06 17:09:00 555

原创 Dij.......最短路径算法

<br />#ifndef _ALGRAPH_H#define _ALGRAPH_H#include <iostream>// #include "Queue.h"/** 邻接表 存储 图*/#define MAX 50unsigned char visited[MAX];void (*VisitFunc)(int v);#define MAX_VERTEX_NUM 20#define MAX_QUEUE_SIZE 100typedef struct {

2010-10-04 23:03:00 2211

原创 Prim 最小生成树算法

<br />#ifndef _ALGRAPH_H#define _ALGRAPH_H#include <iostream>// #include "Queue.h"/** 邻接表 存储 图*/#define MAX 50unsigned char visited[MAX];void (*VisitFunc)(int v);#define MAX_VERTEX_NUM 20#define MAX_QUEUE_SIZE 100typedef struct

2010-10-04 21:04:00 595

原创 图的深度 广度 遍历

<br />#ifndef _ALGRAPH_H#define _ALGRAPH_H#include <iostream>// #include "Queue.h"/** 邻接表 存储 图*/#define MAX 50unsigned char visited[MAX];void (*VisitFunc)(int v);#define MAX_VERTEX_NUM 20#define MAX_QUEUE_SIZE 100typedef struct {

2010-10-04 19:08:00 509

原创 电子设计大赛总结

    今年参加了电子设计大赛信息安全专题邀请赛。从4月初一直到8月10号都是参赛时间。平时太忙,大三了,要考研要实习什么的,一直拖到7月10号才开始做。    其实我一直觉得这是一个神话,不管能不能得奖吧,仅用了一个月的时间就做了一个完整的项目,自己都感觉到不可思议。想想光是那些源码就将近17M。就在一个月前,我都不相信我们还能做完。    7月10号那天期末考试的最后一科考完,是非常恶心的全英文的系统分析设计,一不小心考了90+。考完后大家都放松了,该回家的回家,该休息的休息。。。。我们开始了苦哈哈的编

2010-08-11 17:05:00 2542

转载 工厂模式(感觉写的特别好,转了,原作者水平很高~)

<br /> <br />在各位读这篇文章之前,我给大家一个提醒,我的文章也许称不上一个设计模式类的文章,只能算是自己在项目中的一个设计总结,在这里,我很欢迎大家和我一起讨论。但是同时我想说,我写博客的目的本身就是希望我的经验可以提醒他人,但是如果造成了一种相反的影响,那就违背我的初衷了,所以希望大家对我的观点思考,思考,再思考!另外,感谢Jake.NET,装配脑袋,横刀天笑等对我的鼓励。<br />  1. 代码引子<br />  让我们由一段代码引出我们的这篇文章。<br />  相信每个人,无论是B/

2010-07-09 12:26:00 937 3

转载 各种C/C++

htonl() htons()及inet_ntoa() inet_addr()2008年01月01日 星期二 11:11现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址。没有 必要用手工计算它们,也没有必要用"首先,假设你已经有了一个sockaddr_in结构体ina,你有一个IP地址"132.241.5.10" 要储存在其中,你就要用到函数inet_addr(),将IP地址从 点数格式转换成无符号长整型。使用方法如下:ina.sin_addr.s_addr = inet_addr

2010-07-06 18:37:00 595

转载 c/c++位域

<br />前言<br />很早想说说这个问题了,经常也会有很多公司拿位域出来考人,呵呵要真的想弄清楚还要一点点的分析。<br />这里先看看网宿的一道笔试题目,这道题目我之前是复制网上的,结果不对,修改了一下,可以正确运行了,谢谢(imafish_i )提醒:view plaincopy to clipboardprint?//假设硬件平台是intel x86(little endian)      typedef unsigned int uint32_t;   void inet_ntoa

2010-07-06 17:30:00 547

转载 c语言回调函数

<br />关于回调函数<br />  程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。 <br /><br />声明函数指针 <br /><br />回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现函数指针的声明与函数声明非常类似。

2010-07-03 14:10:00 404

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除