Algorithm
文章平均质量分 56
阿Biang
这个作者很懒,什么都没留下…
展开
-
poj 1007
#includeusing namespace std;/**Author: Bangwen Chen*July 29 2013*/int Measure(char * s,int length){ int weight=0; for(int j=0;j<length;j++){ int tmp=0; if(s[j]=='A') continue;原创 2013-07-29 10:23:18 · 701 阅读 · 0 评论 -
常用排序算法总结(二) ---- 插入排序,快速排序
InsertSort 通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置插入;在实现上通常采用in-place排序,在从后向前扫描的过程中需要反复把已排序元素逐步后移。具体算法描述如下:1、从第一个元素开始,该元素可以认为已经被排序2、取出下一个元素,在已经排序的元素序列中从后向前扫描3、如果该元素(已排序)大于新元素,将该元素移原创 2013-09-21 09:58:22 · 878 阅读 · 0 评论 -
欧几里德算法--求最大公约数
欧几里德算法又称为辗转相除法,两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。如44和8的最大公约数是4,而44-8=36和8的最大公约数也是4./** * @author Bangwen Chen * Description:求最大公约数,同样的思想可用于求两数是否互素(即m和n的最大公约数是否原创 2013-10-05 15:33:38 · 1366 阅读 · 0 评论 -
常用排序算法总结(一)----冒泡排序,归并排序
整理一下这几天总结的九种常用排序算法。这篇先介绍两种。先贴出测试用例Test.java。每种算法类都继承接口Sort。import java.util.Arrays;/** * @author Biang Hoo * * 2013年9月12日 */public class Test { public static void main(String[] args) {原创 2013-09-18 14:53:08 · 1047 阅读 · 0 评论 -
动态规划(四)--最长公共子序列
最长公共子序列问题一种相似度的概念;一个给定的序列的子序列是将序列中零个或多个元素去掉之后得到的结果。定义:给定一个序列X=,另一个序列Z=满足如下条件时称为X的子序列。即存在一个严格递增的X的下标序列,对所有j=1,2,...,k,满足xij=zj,问题描述:给定两个序列X=和Y=,求X和Y的长度最长的公共子序列。Step 1:刻画最长公共子序列的特征原创 2013-09-16 15:37:20 · 1027 阅读 · 0 评论 -
动态规划(一)
学了几周的车,弄得好久没有学习了,今天总算完结了。看看书,继续涨姿势。。。Reference:Introduction to Algorithms(Thrid Edition) 机械工业出版社动态规划原理动态规划方法通常用于求解最优化问题,即求得最优化问题的一个最优解;问题需满足两个要素:最优子结构和子问题重叠。1、最优子结构:问题的最优解由相关子问题的最优解组合而成,而这原创 2013-08-31 15:51:07 · 1032 阅读 · 0 评论 -
分开正负数或奇偶数
问题描述:假设一整型数组存在若干正数和负数(奇数或偶数),现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。利用插入排序的思想解决import java.util.Arrays;/** * @author BiangHoo * * 2013年9月14日 */public class SplitPositiveNegetiveNum原创 2013-09-14 15:57:50 · 1426 阅读 · 0 评论 -
动态规划(三)--矩阵链乘法
问题描述:给定n个矩阵的链,矩阵Ai的规模为Pi-1XPi。求完全括号方案使得计算乘积所需的标量乘法次数最少。为了计算上式,我们可以先用括号明确计算次序,然后利用标准矩阵相乘方法进行计算。例如矩阵链,由于矩阵乘法满足结合律,所以可以有((A1A2)(A3A4)A5)或(A1(A2(A3A4))A5)等计算次序。而对于相容的矩阵A,B,若A矩阵为p*q,B矩阵为q*r,那么乘积C是p*r的矩原创 2013-09-02 16:26:16 · 1821 阅读 · 0 评论 -
动态规划(二)--钢条切割
问题描述:一家公司购买长钢条,将其切割成短钢条出售,切割本身没有成本,长度为i的短钢条的价格为Pi。那给定一段长度为n的钢条和一个价格表Pi,求钢条的切割方案使得收益Rn最大。如一个Pi如下:长度i12345678910价格Pi1589101717202430在距离钢原创 2013-09-01 11:40:43 · 2127 阅读 · 0 评论 -
POJ 1045
#include#include#includeusing namespace std;/*POJ 1045*Author Biangwen Chen *August 2013*/int main(){ double Vs; double R; double C; int n; double w[1000]; cin>>Vs>>R>>C>>n; int i=0;原创 2013-08-05 22:06:42 · 997 阅读 · 0 评论 -
POJ 1032
写了两个,都是同一种思路,先从0到n位列出从2开始的间隔为1的等差数列,直到第N位【值应当为N+1】使得余数left(等于输入值A减去前N个数之和)小于N+2;然后为了构造不同的值,将余数从N位到第一位开始每位加1,若有剩余循环执行。以输入值A=8为例;可以构造数列2,3直到第N=2位,余数为3那肯定是小于N+2(4)的。依次从高位开始加1,一次循环【3,4】还有剩余1,再次执行【3,5】,然后结原创 2013-07-31 08:58:06 · 922 阅读 · 0 评论 -
POJ Volume1练习记录
昨天开始在POJ上做题,作为菜鸟,先做简单的咯,争取天天都做吧,Hang on~1003#includeusing namespace std;/**POJ 1003*Author :Biang Hoo*July 27 2013*/int main(){ double c; while(cin>>c&& c !=0.00){ double sum=0.00;原创 2013-07-28 15:17:09 · 950 阅读 · 0 评论 -
常用排序算法总结(三)----选择排序 堆排序
SelectSort 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法的最差时间复杂度为O(n^2),最优为O(n^2),平均时间复杂度为O(n^2),空间复杂度为O(n),需要辅助空间O(1)代码package So原创 2013-09-25 11:31:57 · 987 阅读 · 0 评论