数据结构与算法
文章平均质量分 64
liujinxunhappy08110
这个作者很懒,什么都没留下…
展开
-
一道gameloft笔试题目的解答
最近在CSDN博客上看到了一道gameloft的笔试题,昨晚和同学商量了下,写了一段代码,在VC6.0下可以正确运行原题:找出一个给定字符串里出现频率最大的字符,函数接口为char GetMaxCountOfString(char* pStr) .代码如下:/***************************************************//* 函数功能:找出原创 2010-03-26 09:45:00 · 1232 阅读 · 1 评论 -
反转一个字符串中的单词
/******************************************** */ /* 程序员: 刘晋勋 *//* 日期: 2010/04/05 *//* 目的: 编程练习 /* 程序功能:反转单词 */原创 2010-04-05 20:47:00 · 469 阅读 · 0 评论 -
不含重复字符的字符串的全排列
比如我们要对“abc"这个字符串进行全排列,可以先固定a,然后对bc进行全排;然后固定b,对ac进行全排,依此类推,可以采用递归的方法实现上述算法思想 /*******************************//* Author:jackliu110 *//* Date:2010/04/07 *//* Purpose:Just原创 2010-04-07 17:14:00 · 395 阅读 · 0 评论 -
二叉树中序遍历的递归与非递归算法
首先,我定义一个二叉树节点的结构体typedef struct node{ char data; struct node *lchild,*rchild;}BinTNode,*BinTree; 二叉树中序遍历的递归与非递归算法 /************************** *程序员:刘晋勋 *日期:2010/04/20 *功能:二叉树中原创 2010-04-20 19:04:00 · 488 阅读 · 0 评论 -
编程之美读书笔记之求数组的子数组的最大乘积
/************************** *程序员:刘晋勋 *日期:2010/04/21 *功能:求子数组的最大乘积 *目的:编程练习**************************/#include#include#includelong MaxProOfSubArray(int arr[],int size){ long res =原创 2010-04-21 10:54:00 · 456 阅读 · 0 评论 -
合并两个已经排好序的数组为另一个数组
#include void DisplayArray(int *pArray, int nLen){ for (int i = 0; i < nLen; ++i) { printf("array[%d] = %d/n", i, pArray[i]); }}// pArray1和pArray2是已经排好序的数组,要求将它们按照顺原创 2010-04-09 20:16:00 · 1353 阅读 · 0 评论 -
经典DP题目-滑雪问题
题目转自CSDN博客,是一道很经典的DP题目,从这道题目,我可以学到两点:1.动态规划,在递归下的记忆化搜索算法;2.状态转移方程的推导;题目描述如下:Michael喜欢滑雪这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个原创 2010-04-22 09:24:00 · 6290 阅读 · 2 评论 -
动态规划(DP)算法介绍
动态规划一,动态规划三要素:阶段,状态,决策。如果把动态规划的求解过程看成一个工厂的生产线,阶段就是生产某个商品的不同的环节,状态就是工件当前的形态,决策就是对工件的操作。显然不同阶段是对产品的一个前面各个状态的小结,有一个个的小结构成了最终的整个生产线。每个状态间又有关联(下一个状态是由上一个状态做了某个决策后产生的)。下面举个例子:要生产一批雪糕,在这个过程中要分好多环节:购买牛奶,对牛奶提纯原创 2010-04-22 10:42:00 · 10197 阅读 · 1 评论 -
学习PKU POJ很有好处
从今天开始,我开始练习POJ的ACM网上训练题,以前总是自己做一些算法题,做得比较杂,现在我决定练习一下POJ的ACM题目,这样既能训练我的算法功力,又能养成良好的编程风格,呵呵。每做完一道题,看后面的Discuss很有帮助。原创 2010-04-22 10:16:00 · 960 阅读 · 0 评论 -
一道小编程题目
编程输出和为指定数的数字组合,如5,则输出 5 = 0+5;5 = 1+4;5 =2+3;6=0+6;6=1+5;6=2+4;6=3+3;/******************************************** */ /* 程序员: 刘晋勋 *//* 日期: 2010/04/23原创 2010-04-23 00:36:00 · 596 阅读 · 0 评论 -
DP经典题目(二)-求最长下降子序列
题目描述:输入任一序列,每一序列以-1结束,求最长下降子序列;在做DP的时候,一定要记得赋初值!!状态转移方程:D[i] = max{1,D[j] + 1}(j = 1,2,3...i-1,A[i] #include #define SIZE 5001 using namespace std; int a[SIZE];int d[SIZE]; int main(原创 2010-04-22 15:21:00 · 1543 阅读 · 0 评论 -
左旋转字符串
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。代码:/******************************************** */ /* 程序员: 刘晋勋原创 2010-04-05 19:39:00 · 804 阅读 · 0 评论 -
一道算法导论编程题目的扩展
算法导论上有一道题目是求出两个已经排好序的n个有序数组中合并后的2n大小数组中的中位数,现在改为求出第i位数,思路和二分查找类似,就是分治策略,我从以下代码中主要温习一下sring类的用法以及这种递归的思想在分治理策略算法中的应用 /******************************************** */ /* 算法导论练习题扩展练习原创 2010-04-02 00:42:00 · 277 阅读 · 0 评论 -
求一个字符串中的最长连续数字
/*****************************************************//*找出一个字符串中出现的最长连续数字,并返回数字长度*//* 目的:编程学习 *//****************************************************/#in原创 2010-03-26 11:00:00 · 1520 阅读 · 1 评论 -
联发搏动笔试题目解答(一)
题目:已知a为[0,f]之间的一个数,n为表达式的项数,写一个程序,求表达式 a+aa+....+a#####a的值,其中最后一项有n个a,函数接口定义为:int Sum(int a, int n)/******************************************** */ /* 联发搏动笔试编程题目 *//* 程序原创 2010-03-28 13:36:00 · 541 阅读 · 0 评论 -
联发搏动笔试题目解答(二)
题目:(1)写一个函数,将一个ASCII字符转换为一个带符号整数,函数接口为 int StrToInt(const char *Str),已知传递给StrToInt的参数只包含数字和负号,是格式正确的数字;(2)写一个函数,将一个带符号的整数转换为一个ASCII字符串,函数接口为char *IntToStr(int num,char *Str),已知道传递给该函数的缓冲区足以容纳int 范原创 2010-03-28 17:14:00 · 477 阅读 · 0 评论 -
两道笔试题目解答
题目1:有n个无序重复数,其中每个数都不超过n,删除重复的数字/*******************************************//* 程序功能:删除一个无序数组中的重复数 *//* 程序员: 刘晋勋 *//* 日期: 2010/03/27 *//* 目的:原创 2010-03-27 22:24:00 · 591 阅读 · 1 评论 -
单链表操作
单链表的逆置,单链表中插入一个元素,删除单链表等#include #include typedef struct Node { Node* next; int value; }Node; Node* ReverseLink(Node* head) { Node* cur = NULL; //如果指针没原创 2010-03-29 09:00:00 · 301 阅读 · 0 评论 -
整数划分问题,作为学习之用,采用递归算法
题目:输入m和n(20>=m>=n>0),请编程求出满足以下方程的正整数数列i1,i2,....,in, 使得:i1+i2+....+in=m,且i1>=i2>=....>=in./*****************************************//* 整数划分问题 */ /*原创 2010-03-30 10:58:00 · 902 阅读 · 1 评论 -
一些算法题目的解答(算法思想转载自网络)
题目1:给定两个排好序的数组,如何高效率地判断这两个数组中是否存在相同的数字解法:算法时间度O(n),遍历一次数组,用两个游标分别指向两个数组,比较两个数组中的数字,将较小的游标向前推进;代码:/***********************************//* 目的:编程练习 *//* 程序员:刘晋勋原创 2010-03-29 10:11:00 · 389 阅读 · 0 评论 -
约瑟夫环
题目就不用介绍了,大家应该都很熟悉,约瑟夫环是循环链表的一个典型应用,我先定义一个循环链表的节点typedef struct Node{ int nNumber; struct Node *link;}Node,*Linklist; 约瑟夫环问题算法大致分为如下几步:1.建立循环单链表;2.移动节点到报数的人;3.循环地删除队列中的节点;代码就不写了,网上很多,原创 2010-04-11 13:21:00 · 358 阅读 · 0 评论 -
双向链表的插入
向双向链表的第i位置插入一个节点双向链表的定义如下typedef struct _node{ int data; struct node *prior; struct node *next;}node; 可以定义一个工作节点,然后在定义一个工作节点的前驱节点,具体代码如下: /*****************原创 2010-04-13 19:54:00 · 322 阅读 · 0 评论 -
大数计算专题(一)----计算大数阶乘
由于计算机数据表示大小的限制,在进行大数运算的过程中极有可能会发生数据溢出的危险,避免溢出的通用方法就是在大数运算中用数组来表示计算结果,我总结了一下相关的大数运算常见问题,今天是第一篇,大数的阶乘。代码如下:/******************************************** */ /* 算法思想转载自网络原创 2010-04-23 08:38:00 · 916 阅读 · 0 评论