自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 4124 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 671

原创 非递归的快排

<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 2628 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 806

原创 求大整数的阶乘

<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 2369 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

空空如也

空空如也

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

TA关注的人

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