随笔分类 -  algorithm

摘要:模拟acm测试系统1. 前言2. 代码模拟acm测试系统1. 前言最近和朋友在做一些acm的训练,虽然算法功力比较薄弱,但对acm的测试系统产生了一点兴趣,于是就尝试使用shell脚本做了一样小型的模拟程序。运行环境主要是linux和mac。我的环境是mac。目前只支持c语言。主要功能有:第一次运行时,会初始化设置你的项目根目录,并询问是否将脚本加入到PATH根据用户输入的题目命名,生成题目目录,包括源文件,测试数据文件,期望数据文件可以生成题目目录的时候,选择是否在控制台输入测试和期望数据根据测试数据文件运行源代码,并生成结果输出文件,和期望数据文件进行比对,输出比对结果提供运行时间的测试, 阅读全文
posted @ 2013-04-06 15:42 btchenguang 阅读(2818) 评论(1) 推荐(3) 编辑
摘要:问题描述: 随机给出一串数i, 要能够给出其中大小中间的那个数 算法描述: 一般做法,做插入排序,然后中间值在索引一半的位置,时间复杂度一般,插入排序平均时间复杂度O(n2),再找中间 值,效率不高。 这里的做法是,引入数据结构--Heap来解决问题,时间复杂度为O(logn)。 引入两个堆,max heap和 min heap来存放整数串i的两个部分,需要满足如下条... 阅读全文
posted @ 2012-05-06 10:31 btchenguang 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:有问题,调试了很久也没有发现错在哪里。。。高手们,请指教源码附件:http://files.cnblogs.com/btchenguang/scc.zip概念:有向图中的强连通指的是可以相互访问到的顶点的集合,简而言之是组成环的顶点的集合,在一个有向图中可能有很多个不同的强连通部分算法思想:1. Let G be a directed graph and S be an empty stack.2. While S does not contain all vertices Choose an arbitrary vertex v not in S. Perform a depth-first 阅读全文
posted @ 2012-04-26 16:05 btchenguang 阅读(456) 评论(0) 推荐(0) 编辑
摘要:DP问题的特征:重复子问题存在最优子集背包问题属于经典的DP问题,而0/1背包问题是属于最简单的情况。0/1的意思是每种物品只有一件,要么放入背包中,要么不放问题定义:有N个物品,要放入容量为W的背包中,第i件物品重量为w(i),价值为v(i),问要怎样放才能在不超过背包容量的基础上,获得最大的价值。算法描述:需要用到递归的思想,定义A(i, j)为前i个物品中在容量为j的情况下所能达到的最大价值,则A(0,j) = 0,A(i,0) = 0(i <= N and j <= W).如果w(i) > j时,说明第i件物品不能放入背包中,价值不变,所以A(i, j) = A(i 阅读全文
posted @ 2012-01-18 14:40 btchenguang 阅读(462) 评论(0) 推荐(0) 编辑