算法设计
文章平均质量分 71
IT小飞飞
Every wrong is a step forward to the success.
展开
-
一个关于移位的问题的多种算法求解
问题描述:一个数组a进行做循环移动k次,然后输出a。 example input:1 2 3 4 5 6 ,左移3位output:4 5 6 1 2 3.#include#include#include#includevoid leftmove1(int *a, int len, int k);void leftmove2(int *a, int len,int k)原创 2013-10-16 19:36:23 · 817 阅读 · 0 评论 -
12个乒乓球最少三次称量找不同球的方法
1,首先,1到12按序进行编号;2,分为三组:第一组:1,2,3,4;第二组:5,6,7,8;第三组:9,10,11,123,先对第一组和第二组,进行第一次称量下面分情况讨论:第一种情况:这两组重量相等,说明不同球一定在第三组中,在第三组中取三个(9,10,11)和已知的三个球进行第二次称若相等说明不同球是12,然后再让这个和其他球称第三次,便知轻重了若不相等,说明不同球在原创 2014-01-07 11:38:37 · 2394 阅读 · 0 评论 -
关于马跳图的汉密顿回路问题
之前,自己写的那个回溯算法,效率非常低,因为他要遍历所有可能的路径,所以解决10以上的问题就会显得力不从心,甚至永远无法解出下面是一个师姐写的算法,效率非常高,用到了分支限界法#include #include #include #define ROW 6 #define LINE ROW #define NUM ROW*LINE原创 2014-01-05 20:47:17 · 1102 阅读 · 0 评论 -
判断一个M*N的国际象棋马跳图是否有汉密顿回路
最近上了算法课,写了一个判断M*N的马跳图中,是否存在汉密顿回路。用的是完全遍历的方法,这里没有使用递归的方法,一直遍历图中的路径节点,直到找到一条满足条件汉密顿回路则停止,当然,这样的算法效率比较低,特别是图中没有汉密顿回路时,要遍历所有可能的路径。#include#define M 6 //行数#define N 6原创 2013-10-27 08:48:27 · 1689 阅读 · 0 评论 -
基数排序的一个例子
在网上看到有人粘贴的一个基数排序的例子,感觉写的非常好留着看吧原文网址:http://blog.csdn.net/cjf_iceking/article/details/7943609/******************************************************** *函数名称:GetNumInPos *参数说明:num 一个整形数据 *转载 2014-01-05 15:27:32 · 986 阅读 · 0 评论 -
Prime的最小生成树算法
最小生成算法,思想大家一般都知道,关键是两点:1、选择一个合适的数据结构构造一个无向图 2、怎样合适的表示U集和V集?这两个问题解决了,最小生成树就能很快写出来了。/********************原创 2013-11-29 08:41:16 · 962 阅读 · 0 评论 -
几种排序算法的总结
//写了几种常用的排序算法如下:#include#include #include #include #define LEN 100#define POWER2(a) (1<<(a))void insertSort(int a[]);void print(int a[]);void BinsertSort(int a[]);void shellsort(i原创 2013-11-04 15:17:00 · 643 阅读 · 0 评论 -
找一个欧拉回路的路径问题
若一个无向图存在欧拉回路,则图中所有的点的度数都为奇数的点的个数为2或0.本题中,给定顶点数vertexNum,和每个点的度数degreeNum(当然这里的度数规定为偶数),且vertexNum>degreeNum。则,必然存在欧拉回路。#include#define vertexNum 20#define degreeNum 10 int upLimiteValue(原创 2013-10-29 16:52:06 · 1025 阅读 · 0 评论 -
归并排序方法
任意给出一行随机数,对这些随机数从小到大,进行归并排序。这里只是简单的没有用到递归,后续的改进算法思想:1、不回写(减少这里copy()函数),2、不逆序,(组合片段时,选择那些已经是顺序的片段,例如(3,5,6),(4),(2),(7,8)),3、与插入结合(因为可以证明,当每个片段的长度#include#include#include#define LEN 37void原创 2013-10-29 22:06:14 · 905 阅读 · 2 评论 -
最优二分树
给定四个点:A,B,C,D,它们的查找概率分别为0.3,0.1, 0.2,0.4,(概率*10作为节点代价)采用动态规划的思想给出最优二分搜索树。首先 给出一个以K为根查找从i到j的 求解最优代价的公式:Cij=C(i,k-1) + C(k+1,j) +P(ij), ijk都表示下标,P(ij)表示从i到j的权重之和。(i=k=j)下面开始计算过程:从第n+1个节点原创 2014-01-07 16:04:32 · 912 阅读 · 0 评论