- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 C程序设计的抽象思维-回溯算法-迷宫问题
【迷宫问题】【算法1---堆栈回溯】计算机解迷宫时,通常用的是"试探和回溯"的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止,如果所有可能的通路都试探过,还是不能走到终点,那就说明该迷宫不存在从起点到终点的通道。 1.从入口进入迷宫之后,不管在迷宫的哪一个位置上,都是先往东走,如果走得通
2014-05-18 12:58:53 1555
原创 C程序设计的抽象思维-递归过程-数集分离问题
【问题】给定一个数集,分离问题要求找到其子集,使所有的数相加等于一个特定的数。例如,有两种方法可以分离集合{1, 3, 4, 5},从而使子集中的额元素相加等于5:第一种方法:选1和4第二种方法:只选5相比之下,没有方法分离集合{1, 3, 4, 5}得到11。编写一个函数NumberOfPartitions,它以一个整数数组、数组长度和目标数为参数,返回得到的子集元素总和为目
2014-05-17 11:36:09 1037
原创 C程序设计的抽象思维-递归过程-砝码称重
【问题】在狄更斯时代,商人们用砝码和天平来称量商品的重量,如果你只有几个砝码,就只能精确地称出一定的重量。例如,假定只有两个砝码:分别中1kg和3kg,只用1kg的砝码可以称出1kg重量的商品,只用3kg的砝码可以称出3kg重量的商品。1kg和3kg的砝码放在天平同一边可以称出4kg重量的商品,放在不同边可以称出2kg重量的商品。因此利用这两个砝码,我们可以称出重量分别为1、2、3、4kg的商
2014-05-17 10:42:11 1499 1
原创 C程序设计的抽象思维-递归过程-格雷码
【问题】每一对相邻整数的二进制表示只有一位发生变化,这种编码称为Gray码。如下所示3位的Gray码:00000011011201031104111510161007要产生N位的Gray码,所需的递归思想概括如下:1. 写出N-1位的G
2014-05-16 17:05:36 1967
原创 C程序设计的抽象思维-递归入门
【斐波那契序列】序列中的每一个新项都是它前两项的和。 0 1 1 2 3 5 8 13 21 34 55 89 144 …………数学表达式表示序列中的一个新项: tN = tN-1 + tN-2像这种类型的表达式,序列中的每一个元素都是由先前的元
2014-05-14 16:11:51 1086
原创 Kruskal算法的C语言实现(并查集版)
【问题】Kruskal算法求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e 步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次考虑一条边。当考虑某条边时,若将其加入到已选边的集合中会出
2014-05-12 17:40:18 3245
原创 最小生成树-Prim算法
【问题】求一个给定的加权连通图的最小生成树问题。【代码】#include #include #define MAXNUM 1000#define MAX_VERTEX_NUM 20typedef char Vertextype;typedef struct node { int weight;}Adjmatrix[MAX_VERTEX_NUM][MAX_VERT
2014-05-11 17:22:19 765
原创 约瑟夫环问题(Josephus)
【问题描述】 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)【解题思路】构建一个循环链表,每个结点的编号为1,2,......,n。每次从当前位置向前移动m-1步,然后删除这个结点。【C程序代码】#include #include type
2014-05-06 10:50:36 1058
转载 C/C++基础知识:typedef用法小结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
2014-05-03 11:52:02 440
原创 2013华为校园招聘机试题
题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数: void stringFilter(const char *pInputStr, long lInputLen, char *pOutp
2014-05-02 21:10:59 639
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人