Algorithm
文章平均质量分 63
CouchDB
专注于系统级应用的开发,研究方向:runtime system, compiler techniques, programming language, computer architecture等
展开
-
汇编
----------***计科1-李坚松-2012301500026***----------题目:汇编语言实现排序算法。先划分一块内存区域,存有10000个数据。 ① 任选一种排序算法实现将这10000个数据从小到大排序; ② 快速搜索指定的数据,并统计其个数。 解: 对于第一问,简单的实现思路就可以考虑用冒泡排序。 冒泡排序是基于交换排序的思路,通过在无序区中相邻元素关键字原创 2015-05-26 02:22:15 · 953 阅读 · 0 评论 -
leetcode最长递增子序列问题
题目描述:给定一个数组,删除最少的元素,保证剩下的元素是递增有序的。分析:题目的意思是删除最少的元素,保证剩下的元素是递增有序的,其实换一种方式想,就是寻找最长的递增有序序列。解法有很多种,这里考虑用动态规划实现。开辟一个额外的一维数组dp[]用来记录以每个元素为结尾的最长子序列的长度,当然,还需要一个哈希表,用来保存最长子序列的元素。dp[i]表示以数组A[i]为结尾的最长子序列的长原创 2015-08-11 14:03:08 · 2961 阅读 · 0 评论 -
HDOJ2084数塔问题
数塔问题题目要求从顶层走到底层,若每一步只能走到相邻的结点,求经过的结点的数字之和最大值。很经典的DP,可以这样考虑,要求从塔顶到塔底最大路径之和,计算时可以考虑自底向上,走最后一步所选的数一定是塔底的某个值,向上退一层,对于倒数第二步,所走的是塔底往上一层较大的那个数,此时可以将倒数第二步所走的数与塔底较大的值加起来,记忆存储,依次往上推,一直推到塔顶,此时所计算出的结果一定是最大的。原创 2015-08-11 12:00:10 · 1013 阅读 · 0 评论 -
HDOJ1160 Fat Mouse's Speed
FatMouse's Speedhttp://acm.hdu.edu.cn/showproblem.php?pid=1160 最长递增子序列问题的一个变体,实际上跟最长递增子序列问题没有任何本质的区别。定义一个结构体mice,设mice[i].w表示第i只老鼠的重量,mice[i].s表示第i只老鼠的速度。对mice结构体进行排序,以w为第一关键字,递增,s为第二关键字,递减。设d原创 2015-08-12 20:04:54 · 867 阅读 · 0 评论 -
Max Sum
Leetcode上有一个Max Sum问题,题目的描述很简单,即对于一个输入的数组,求其连续子数组的最大和。比如说,A={ 6,-1,5,4,-7},那么其连续子数组的最大和为6 + (-1) +5 + 4 = 14.分析:这是很简单的动态规划题,动态规划做多了,第一个想法就是用一个一维数组记录以每个元素为结尾的子序列的最大和,然后再扫描一遍这个数组,以获取最大值。但是仔细分析一下,其原创 2015-08-26 21:35:47 · 1793 阅读 · 0 评论 -
组合数学之母函数问题
母函数问题是组合数学中非常经典的问题,大概是本科二年级的课程,很有意思的一门课,当然也是很精深的一门课。定义对于序列a0,a1,a2,…构造函数G(x): 则称函数G(x)是序列a0,a1,a2,…的母函数。 很明显,根据二项展开式,很容易知道(1+x)^n是序列C(n,0),C(n,1),…,C(n,n)的母函数。如果已知序列a0,a1,a2,…则对应的母函数G(x)便可根据定义给出。反之原创 2015-08-06 19:18:24 · 3133 阅读 · 0 评论 -
HDOJ1087 Super Jumping! Jumping! Jumping!
Super Jumping! Jumping! Jumping!http://acm.hdu.edu.cn/showproblem.php?pid=1087分析:简单的动态规划题。题目的意思很直白,其实就是寻找最长递增子序列。假设dp[i]表示的是从start到达第i个点时可获得的最大分数,data[i]表示的是第i个点的分数值,那么可以得到,dp[i]= max{dp[i原创 2015-08-22 14:23:13 · 1129 阅读 · 0 评论 -
暴力枚举算法的优化:抽签问题
题目描述将写有数字的n个纸片放入口袋中,你可以一次从口袋抽取4次纸片,每次记下纸片的数字后将其放回口袋。如果这4个数字的和是m,那么你就赢了,否则你就输了。编写程序,判断当纸片上的数字是k1,k2,…,kn时,是否存在抽取4次和为m的方案。如果存在,输出Yes;否则输出No.限制条件,数据规模1i时间限制为1s.输入的第一行表示n,第二行表示m,第三行的n个数字表示k.原创 2016-01-21 15:26:13 · 1679 阅读 · 0 评论 -
woj1208 Sherlock's Code
题目链接:http://acm.whu.edu.cn/learn/problem/detail?problem_id=1208题目的大概意思是输入两个长度为N的数组,计算数组的两两之和,得到N*N个数后,从小到大排序,输出前N个数。题目的限制条件还是有的,数据的规模:数组的长度1 这道题卡了我很久。拿到题的第一想法就是,肯定不能直接按照题目的意思去做,因为这样做内存很容易超。需原创 2016-01-21 23:37:46 · 1120 阅读 · 0 评论 -
HDOJ1466
计算直线的交点数题目不是很难,根据点的产生过程,很容易知道,对于n条直线,其产生的交点数在[0,(n-1)n/2]中。其中,当所有的直线都平行时,交点为0;当所有的直线两两相交时,产生的交点数是(n-1)n/2,很容易证明,假设n条直线的两两相交时产生的交点数为s(n),容易得到递推关系式,s(n)=s(n-1)+n-1,即已知n-1条直线两两相交产生的交点数时,第n条直线会与剩下的n-1条直原创 2015-08-10 18:20:26 · 957 阅读 · 0 评论 -
动态规划小结
动态规划[dp]是解决问题很经典的算法。基本的思想,就是将一个问题转化为若干个子问题,当某个子问题的解已经算出来的时候,就将其记忆存储起来,以便于下次解决同一个子问题时就可以直接给出答案,这样的一个好处就是可以避免重复计算。动态规划适用于有重叠子问题和最优子结构性质的问题,通常能够达到把指数级的时间复杂度下降为多项式时间复杂度的效果。 需要注意的几个点:需要一个辅助空间,原创 2015-08-10 14:23:09 · 734 阅读 · 0 评论 -
关于矩形排样问题(一)
最近看到几个比较有意思的软件:极致下料、Cutlogic 2D、新易优化板材切割等软件,都围绕一个共同的话题,即板材切割,主要是针对二维的。对于上述软件,下载安装测试了一下,极致下料还算可以吧。让我好奇的是整个软件的实现算法,如果是暴力枚举的话不可能分分钟就返回一个还算可以接受的结果。目测用了一些智能搜索算法,像遗传算法、蚁群算法、模拟退火算法等等。好奇心的驱动,自己也研究了一些矩形排样的文章。准备原创 2015-05-04 11:34:01 · 11682 阅读 · 8 评论 -
新纪元,定期总结是一个好习惯
个人博客开篇说明本人whu计算机系,本科四年过了三年,也快要毕业了,还没有养成定期总结的习惯。因此特定开了一个博客栏目,用于记录学习生活中遇到的点滴。目的只有一个:为了学习,为了提高,为了养成良好的习惯。 以后会不定期地更新。本人博客主要记录以下关于计算机方面的一些技术AndroidC++算法研究科研Java数据挖掘与机器学习……原创 2015-05-04 00:24:16 · 879 阅读 · 0 评论 -
关于矩形排样问题(三)
上一篇博客 关于矩形排样问题(二) 给出了矩形排样问题的背景,并对遗传算法做出了详细的介绍。但是没有给出具体的解决方法,这里针对矩形排样问题,给出基于遗传算法的解法。利用率的定义谈到矩形排样问题,必然涉及到板材的利用率问题,这里的利用率定义如下: 假设n种小矩形Ri的面积分别为Si(i=1,2,…,n),数量分别为ni(i=1,2,…,n),宽为wi,高为li,以 (wi,li)表示,则要下料的矩原创 2015-07-11 01:41:24 · 93305 阅读 · 18 评论 -
关于矩形排样问题(二)
上一篇博客 关于矩形排样问题(一) 引出了矩形排样问题,但是未给出解决方案,下面给出具体的解决方法以及相应的编码思路。 注:本问题的背景是第八届华中地区数学建模本科组的A题,本人侥幸拿了一等奖,呵呵,遗传算法只是解决问题的一个子方案,还有很多地方待优化。 在给出解决方案之前,先对遗传算法进行简单的介绍。网上关于遗传算法的例子很多,感兴趣的可以自己去钻研,对于网上的一些解释,不要觉得晦涩难懂,这是原创 2015-07-09 22:09:31 · 12510 阅读 · 2 评论 -
HDOJ1004
最近才有意识地开始刷HDOJ上的题目,先从水题开始练手,比如说1004。 该题目的意思很简单,第一行输入气球的个数n,以下n行输入n个气球的颜色,n为0时输入结束,要求输出哪种颜色的气球颜色最多。 这题是很简单,也用不到什么算法的东西,就是对输入的字符串进行比较和统计。 看到题的第一想法很简单,先抛开问题,先对输入的格式做一个尝试,就是对输入的结果进行遍历输出,呵呵,最初的尝试就折腾了很久,也原创 2015-08-08 10:41:54 · 2462 阅读 · 0 评论 -
HDOJ1009
1009,又是一道水题,属于那一类看到题就能想到解决方案。思路很清晰,就是输入(M,N)和N个(J,F),对输入的(J,F)按照比值[可以理解为效益]降序排序,按照效益高低进行有序交易。 关键是如何对结构体进行排序,这里可以考虑用STL。#include<iostream>#include<stdlib.h>#include<stdio.h>#include<algorithm>using原创 2015-08-09 15:57:30 · 1013 阅读 · 0 评论 -
HDOJ1021
Fibonacci Again当看到题目给出的输入数据n < 1,000,000的时候,就知道肯定不能按照题目的意思直接算出来F(n)。 仔细地看一下给出的F(n),F(0)=7,F(1)=11, F(n)= F(n-1)+ F(n-2),继续写几个F(2)=18, F(3)=29,F(4)=47,F(5)=76,F(6)=123,F(7)=199,F(8)=322,…,其实把F(n)算出来的意义原创 2015-08-09 16:59:41 · 795 阅读 · 0 评论 -
HDOJ1005
Number Sequence 这一题拿到手,第一感觉是不会太难,毕竟算是比较靠前的题目,呵呵。随手写了一个,也知道应该会挂掉,因为1 <= n <= 100,000,000,#include <iostream>using namespace std;int main(){ int a,b,n; while(cin>>a>>b>>n && n) {原创 2015-08-09 21:03:00 · 1674 阅读 · 0 评论 -
HDOJ1071
The area 拿到题的第一想法,又是一道水题,知道P1、P2、P3三点的坐标,就可以确定抛物线的公式,确定抛物线的公式就可以进行积分,然后就没有然后了。纯粹的数学题。#includeusing namespace std;int main(){ double x1,y1,x2,y2,x3,y3,a,b,c,s; int n; while(cin>>n&&n)原创 2015-08-09 21:47:14 · 840 阅读 · 0 评论 -
排序算法小结
网上关于排序算法的总结太多了,这篇文章就写得不错。http://m.blog.csdn.net/blog/likaiwalkman/23713373经典就是经典,个人觉得这些经典的算法被反复研究几十遍都不为过。同时也参考了很经典的书籍《数据结构与算法分析——C语言描述》,温故而知新,每次回头看这些算法的时候都为其中博大精深的思想所折服,呵呵,不扯了。这里只贴出一份用代码敲出来的各个排序算法原创 2015-08-24 19:00:53 · 1047 阅读 · 0 评论