算法
游离子丶
这个作者很懒,什么都没留下…
展开
-
动态规划03
因为前面两期已经对动态规划做了很多的说明,所以以后的关于动态规划的部分可能只会说下递归的条件与出口,还有非递归的解答。如果对动态规划还不熟悉,或者有疑问的话,请看下动态规划的前两期,也可以在下方评论区留言。那么开始这期的题目。题目:找零问题,给出一个整数n,表示有n种面值的钞票,接下来是n个数值,分别表示这n种面值。然后再给出一个找零的目标值s。求最少需要多少张钞票来达到这个目标值s。样例:输入:...原创 2018-03-08 22:24:40 · 141 阅读 · 0 评论 -
选择排序
选择排序和插入排序很像,都是将一个数组分为有序和无序两部分,但是插入排序是每次选择无序部分的第一个,插入到有序部分中;而选择排序是每次从无序部分中选择一个最小的数,放入有序部分的末尾,从而扩大有序部分,缩小无序部分,直到无序部分的长度为零。package com.test.demo;import java.util.Scanner;public class Test { pu...原创 2018-09-12 20:04:16 · 136 阅读 · 0 评论 -
插入排序
插入排序是将一个序列分为两部分,左边为有序部分,右边为待排序部分,每次取待排序部分的第一个数,与有序部分相比较,将其放入左边的序列中,成为一个新的有序序列。import java.util.Scanner;public class InsertionSort { public static void main(String[] args) { Scanner sc = new...原创 2018-08-30 14:53:25 · 175 阅读 · 0 评论 -
快速排序
快速排序是以某个数k为基准,在一次(升序)排序中,将比k小的数放在k的左边,比k大的数放在k的右边,然后把k左边的部分再做一次快速排序,把k右边的部分也做一次快速排序,最后得到一个排序后的序列。package com.test.demo;import java.util.Scanner;public class Main { public static void main(S...原创 2018-08-13 15:41:52 · 173 阅读 · 0 评论 -
冒泡排序
太久没自己写排序了,今天本来想手写一个,竟然连快排都写不出来了。好吧,所以于是打算把常用的排序全部整理一遍,首先是冒泡排序。冒泡排序顾名思义,像池塘里的泡泡一样往上浮。以升序序列为例,冒泡排序每次就是把最小的往序列前面走,或者把最大的往序列后面走。先贴上代码:package com.test.demo;import java.util.Scanner;public clas...原创 2018-08-10 22:20:25 · 1417 阅读 · 0 评论 -
递归01
程序自己调用自己的方法称为递归。一般,我们在对于一个大的问题不好解决的时候,总是喜欢将大的问题转化为若干个子问题。而这些子问题如果具有相同的结构(一般我们可以认为在描述上是相同的。),那么我们就可以用递归的方式来求解。例如:在计算n!的时候,我们并不能马上知道n!是多少,所以我们会转而去求(n-1)!。同样,我们也不知道(n-1)!是多少,所以我们会去想办法求出(n-2)!,以此类推。当我们一直将...原创 2018-03-27 20:29:53 · 123 阅读 · 0 评论 -
递归02
前面讲过了递归的基本思想,现在来看一道经典的整数因子分解问题。大于1 的正整数n 可以分解为:n=x1 *x 2*…*xm 。 例如,当n=12 时,共有8 种不同的分解式: 12=12*1; 12=6*2; 12=4*3; 12=3*4; 12=3*2*2; 12=2*6; 12=2*3*2; 12=2*2*3对于给定的正整数n,编程计算n ...原创 2018-03-30 23:44:20 · 104 阅读 · 0 评论 -
最后的倔强
继续前面没过去的那个动态规划题目,换了种简单的方法,姑且是过了,而且效率更高。(problem 1003)import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nex...原创 2018-03-19 21:50:19 · 236 阅读 · 0 评论 -
动态规划02
第二期的动态规划来啦!题目如下:给出某一个数组,在给出一个数字s,需要判断数组中是否存在一个或几个数之和等于这个sum,如果存在,则输出true,如果不存在,则输出false。样例:输入63 34 4 12 5 29输出true这次还是分为递归与非递归来解题,先是递归方法。我们一样还是可以用选和不选的思路。还是从最后一个数字2看起,如果我们选了这个2,那么我们就要从剩下的数字中组合出数字7才行,而...转载 2018-03-05 21:13:45 · 152 阅读 · 0 评论 -
动态规划05
原题:Problem 1003嘛。。。自己菜的抠脚,能找到的测试数据几乎都过了,然而还是过不了OJ,要是有人有发现错误的话,欢迎指出。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);...原创 2018-03-12 17:27:47 · 113 阅读 · 0 评论 -
动态规划01
刚刚学习了动态规划的算法,打算写篇文章记录一下。但是这次并不打算用01背包来做例子,因为觉得这个例子还不够简单,打算把背包问题放到后面去说。首先呢,动态规划是在对一个问题进行求解,然后使这个问题的解达到全局最优的这么一个算法。(由于动态规划可以分为递归和非递归的解法,所以下面将分为两部分来讲一道题,首先是递归部分。)我们来看一个题目:有以下这么一个数组:arr={1, 2, 4, 1, 7, 8,...转载 2018-03-03 14:58:57 · 250 阅读 · 0 评论 -
动态规划04
今天来说说你们关心的01背包问题。如果说做了动态规划这个专题,又不做背包问题的话,好像也说不过去吧。所以今天就来讲下这个01背包。当然关于动态规划的基本解法还是请看前两期,今天这个01背包我们只来就题讲题。01背包的问题大概是说,有n个物品,每一个物品有自己的体积和价值,然后现在有一个只能容纳m体积的背包,要怎么选择物品,才能使最后的价值最大。01背包的"0"和"1"本身就表示的是选和不选,很符合...原创 2018-03-09 16:15:16 · 134 阅读 · 0 评论 -
N!
import java.util.Scanner;/** * 大数阶乘基本思想: * 由于数值较大,导致long类型的数据存放不下,在不使用大数类的情况下考虑用数组进行存储, * 数组的每一个元素存放最终结果的四位,比如,最终结果为3628800的话,a[0]=8800,a[1]=362, * 最后按数组从后往前输出即可 * @author yuriko * @date 2018/...原创 2018-09-19 09:57:43 · 258 阅读 · 0 评论