编程算法
文章平均质量分 57
一些实用算法的讲解和例题
饿狼干爹
理想是丰满的,现实是骨干的
展开
-
【KMP】hdu1867(A + B for you again) 杭电java a题真坑
点击打开链接 Problem Description Generally speaking, there are a lot of problems about strings processing. Now you encounter another such problem. If you get two strings, such as “asdf” and “sdfg”, the原创 2015-08-11 20:21:10 · 937 阅读 · 1 评论 -
【KMP】杭电2549(第一次用java写kmp算法)
点击打开杭电2549 Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marge: Yeah, what is it? Homer: Take me for example. I want to find原创 2015-04-11 16:39:05 · 869 阅读 · 0 评论 -
【KMP】kmp学习(个人知识点理解顺序)
学习kmp知识点顺序 1、字符串前缀和后缀的概念 如果给定的模式串是:“ABCDABD”,从左至右遍历整个模式串,其各个子串的前缀后缀分别如下表格所示: 也就是说,原模式串子串对应的各个前缀后缀的公共元素的最大长度表为(下简称《最大长度表》): 2、kmp算法 一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"AB原创 2015-04-10 10:21:48 · 872 阅读 · 0 评论 -
【排序】快速排序模板
以某个记录(元素)为界(该记录称为支点或枢轴),将待排序列分成两部分: ①一部分: 所有记录的关键字大于等于支点记录的关键字 ②另一部分: 所有记录的关键字小于支点记录的关键字 算法描述: 1、任取待排序记录序列中的某个记录(例如取第一个记录)作为基准(枢),按照该记录的关键字大小,将整个记录序列划分为左右两个子序列 2、左侧子序列中所有记录的关键字都小于或等于基准记录的关键字原创 2015-08-01 17:57:35 · 816 阅读 · 0 评论 -
【排序】希尔排序模板
希尔排序又称缩小增量排序 1、先取定一个小于n的整数gap1作为第一个增量,把整个序列分成gap1组。所有距离为gap1的倍数的元素放在同一组中,在各组内分别进行排序(分组内采用直接插入排序或其它基本方式的排序)。(一般gap1为n/2,一次往后类推:gap2=gap/2,若为奇数,则gap2=(gap1+1)/2 gap1=(n+1)/2) 2、然后取第二个增量gap2 3、依此类推原创 2015-08-01 16:37:42 · 793 阅读 · 0 评论 -
【排序】二分插入排序模板
在直接插入排序的基础上,利用二分(折半)查找算法决策出当前元素所要插入的位置。 二分查找:找到中间元素,如果中间元素比当前元素大,则当前元素要插入到中间元素的左侧;否则,中间元素比当前元素小,则当前元素要插入到中间元素的右侧。 找到当前元素的插入位置i之后,把i和high之间的元素从后往前依次后移一个位置,然后再把当前元素放入位置i。 public class SortMethods {原创 2015-08-01 16:23:18 · 682 阅读 · 0 评论 -
【排序】插入排序模板
import java.util.*; class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.print("Input n : "); int n=sc.nextInt(); int[] a=new int[n]; for(int i=原创 2015-04-14 21:35:10 · 673 阅读 · 0 评论 -
【排序】快速排序模板
import java.util.*; class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.print("Input n : "); int n=sc.nextInt(); int[] a=new int[n]; for(int i=原创 2015-04-14 21:35:09 · 573 阅读 · 0 评论 -
【排序】选择排序模板
import java.util.*; class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.print("Input n : "); int n=sc.nextInt(); int[] a=new int[n]; for(int i=原创 2015-04-14 21:34:03 · 563 阅读 · 0 评论 -
【排序】冒泡排序模板
import java.util.*; class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.print("Input n : "); int n=sc.nextInt(); int[] a=new int[n]; for(int i=原创 2015-04-14 21:32:02 · 650 阅读 · 0 评论 -
【母函数】hdu2069(Coin Change)母函数加深
hdu2069 思路:组合问题,可以考虑用母函数,但是这里考虑组合的个数和组合的最大数。硬币的个数不超过100;而且硬币的 总值不大于250。要同时兼顾这些问题,同一总值,可以由不同个数的硬币组成,即相互对应的关系,就得考虑二维数组a[i][j]:用i表示组成的值,j表示所用的硬币个数。import java.util.*; class Main{ public static void mai原创 2015-04-09 15:51:11 · 851 阅读 · 0 评论 -
【母函数】hdu1398(Square Coins)
hdu1398 构造母函数:G(x)=(1+x+x2+x3+x4+…)(1+x4+x8+x12+…)(1+x9+x18+x27+…)…第一个多项式表示1分币的个数从1个开始,第二个多项式表示4分币的个数,从1开始,第三个多项式表示9分币的个数,相乘就可以得到不同币不同个数的组合。 1 2 3 4 5 6 7 8 9 10 11原创 2015-04-08 17:14:04 · 580 阅读 · 0 评论 -
【母函数】hdu1028(Ignatius and the Princess III)
多项式乘法:(1+a1x)(1+a2x)……(1+anx)=1+(a1+a2+......+an)x+(a1a2+a1a3+......an-1an)x2+.......+a1a2a3...anxn可以看出x2项的系数a1a2+a1a3+...+an-1an中所有项包括n个元素,a1,a2.....an中的两个组合的全体,同理以此类推。 母函数定义:对于序列a0,a1,a2.....构造一函数:原创 2015-04-08 16:47:41 · 664 阅读 · 0 评论 -
【母函数】母函数前提知识:矩阵相乘
A=2*3 1 2 3 4 5 6 B=3*4 1 2 3 4 5 6 7 8 4 3 2 1 R = A*B 思路:A矩阵第一行乘B矩阵第一列得等R矩阵的第一行第一列的值,以此类推。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21原创 2015-04-08 16:21:53 · 1136 阅读 · 0 评论