算法
文章平均质量分 61
span76
这个作者很懒,什么都没留下…
展开
-
算法: 动态规划解最长公共子串
继上篇文章“算法:动态规划解 0-1 背包问题”,再发一篇上篇: http://blog.csdn.net/span76/article/details/8033953#include using namespace std;char a[]="abecd";char b[]= "abcd";char result[512];int rIdx = -1;int ma原创 2012-10-11 18:18:11 · 740 阅读 · 0 评论 -
编程练习:Spell checker
http://poj.org/problem?id=1035DescriptionYou, as a member of a development team for a new spell checking program, are to write a module that will check the correctness of given words using原创 2015-04-28 11:10:09 · 675 阅读 · 0 评论 -
编程练习:Biorhythms
http://poj.org/problem?id=1006DescriptionSome people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical, emoti原创 2015-04-29 15:19:01 · 555 阅读 · 0 评论 -
编程练习:False coin
http://poj.org/problem?id=1029The "Gold Bar"bank received information from reliable sources that in their last group of N coins exactly one coin is false and differs in weight from other coins (原创 2015-04-16 17:44:28 · 1114 阅读 · 0 评论 -
编程练习:青蛙的约会
题目在:http://poj.org/problem?id=1061Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能原创 2015-03-18 15:14:23 · 918 阅读 · 0 评论 -
验证图是否相似
思考图相似的问题,如果一个图和另一个相似但,顶点标注不同,能否判断出来。思路如下:用矩阵表示图1)枚举第二图的顶点的一个排列 a) 通过swap的方法得到第二图的新图 (发现交换顶点,只需要交换相应的行和列就得到新图) b) 匹配第一图和第二图的新图 c) 相同就完成,否则回到1)实现如下package com.pnp.mapsim原创 2015-01-30 10:41:51 · 808 阅读 · 0 评论 -
编程练习:Transmitters
为何保持编程的兴趣,还是找一些代码来写看了 http://poj.org/problem?id=1106, 分析思路如下:1)把坐标系原点定位为圆心,把其他点转化为极坐标2)从第一个点开始,逐个查找满足所有落在,此点到原点为起始变,半径为参数所给的半圆区域内的点3)所有点都扫描后给出最大覆盖的点数package com.pnp.hello;i原创 2014-11-26 17:09:51 · 988 阅读 · 0 评论 -
CRC32 vs Java.HashCode
找了容量为27万中文词库进行试验 CRC32 中冲突率 而 Java.HashCode 有 4% hashCode 的速度 应该比 CRC 快 2-3 倍CRC 实际上就是求余数, 1)被除数是确定好的,被除数首位要求是1(可以理解,因为0,就相当于会少一位),尾数也要求是1(为何) 2)CRC8 是指余数是8位,那么被除数就是9位,CRC16,被原创 2013-07-22 16:22:05 · 2575 阅读 · 0 评论 -
并发遍历二叉树 Java 实现
单线程遍历二叉树是数据结构书中必讲的算法, 但多线程访问呢?我最近写了一个多线程遍历二叉树的算法, 当然既然是多线程,就不保证一定的顺序, 只要节点能访问到就算数.算法的基本思路1) 使用 java.util.concurrent.ThreadPoolExecutor 构造线程池2) 当线程池有空余线程把树的右子树拆分给另外一个线程处理, 否则自己处理右子数要考虑的原创 2013-04-16 11:11:19 · 2641 阅读 · 1 评论 -
线段交叉法 构造迷宫
迷宫是算法经常用到的问题, 一般构造迷宫的方法是自己定义矩阵, 0 表示平地, 1表示墙最近我想了一种另类的方法构造迷宫, 下面介绍一下基本原理构造一个"表格"去掉表格中的某些线段,就自动生成迷宫了下面程序生成图如何保证迷宫一定有出路思路就是:画出一条路径, 把交叉的代表墙的直线,全部去掉原创 2013-04-16 18:05:51 · 2320 阅读 · 0 评论 -
货郎问题 Java 实现
我使用的方法是:假设图有n个顶点, 若干条边1) 从所有边中找到 n-1 条边构成选择组合2) 从权值和最小的组合开始验证边能否这个组合能遍历所有的顶点如果能遍历则找到答案因此算法的关键是:1) 找子集合并按权值和排序, 这个问题我在这篇文章中提到http://blog.csdn.net/span76/article/details/8755416原创 2013-04-05 16:16:56 · 1946 阅读 · 0 评论 -
算法:递归解序列中最长递减子序列
递归编程很简洁,关键是:1)做好抽象,要把问题分解为递归的问题2)找到准确的程序终止条件下面是求最长递减序列的递归算法:如果不在递归中传送参数,问题还是不好解决的,参数的意义就是,返回子最长序列的最小的顶元素#include using namespace std;#define MAX_COUNT 7int a[] = { 5,10,1,6,8,7,4 };原创 2012-09-30 11:43:28 · 1501 阅读 · 0 评论 -
算法:求行列式 C语言实现
兴趣来了,编写一个求行列式的程序,关键要解决两个问题1)行列式列序号的全排列2)行列式的符号#include #include using namespace std;#define LEN 3#define COUNT 3*2*1 // the count of premutation for length 3int idx[LEN] = { 0,1原创 2012-10-02 21:14:22 · 4883 阅读 · 1 评论 -
算法: 找子集合并按权值和排序 (货郎问题辅助算法)
假设给出的 1-8 个数, 选4个1) 最小的权值的几个 ( 1, 2, 3, 4)2) 假设当前(a, b, c, d), 如果我们能确定权值和刚好大过它的组合, 不难找到所有组合按权值和排序数据结构需要两个结构 selects和 remains, selects 是已经选择的子集合, remains 是要考虑的数他们是列表并需要排序, 先开始元素放置原创 2013-04-03 13:40:21 · 1565 阅读 · 0 评论 -
编程练习:找到和最大的子序列
概念:当前位置:本算法只遍历一边,当前遍历到的位置子序列:位置连续的几个数当前子序列:当前要考虑的子序列,这里设定当前子序列是负就要舍弃临时和最大子序列:遍历没完成前,临时记录的和最大子序列,遍历完成它就是最终结果思路:首先,当前子序列为空,当前子序列和为0开始,遍历 当前子序列和 + 当前位置书,看结果是正还是负 正(或0)原创 2015-12-22 19:13:15 · 722 阅读 · 0 评论