
算法
Stoneking12
多看书,多看报;少玩电脑,多睡觉。
展开
-
最长递增子序列 DP JAVA
题目的意思是在一个数组中,求出最长递增的一个序列长度。以数组arr = {4,2,3,1,5,6,4,8,9}; 为例:先创建一个dp数组 ,用dp数组的下标来表示最长递增子序列的长度程序执行顺序:遍历arr数组dp[1] = 4;dp[1]=4>2 所以更新 dp[1] = 2dp[1]=2<3 所以3加入dp dp[2] = 3dp[2]=3>1 此时遍历dp数组 由于dp数组是递增排列的 找到第一个大于1的数 并更新该数 即 dp[1]=...原创 2020-05-09 22:10:03 · 286 阅读 · 0 评论 -
LCS最长公共子序列 java 递归+DP
在两个字符串中,有些字符会一样,可以形成的子序列也有可能相等,因此,长度最长的相等子序列便是两者间的最长公共字序列,其长度可以使用动态规划来求。以s1={1,3,4,5,6,7,7,8},s2={3,5,7,4,8,6,7,8,2}为例。创建 DP数组dp[][];import java.util.ArrayList;/** * @author wl * @Data 202...原创 2020-05-07 23:18:53 · 707 阅读 · 0 评论 -
dfs困难的串 JAVA
/** * @author wl * @Data 2020-04-18 8:29 */public class dfs困难的串 { public static void main(String[] args) { dfs(4,7,""); } static int count = 0; static void dfs(int l,i...原创 2020-04-18 13:17:06 · 260 阅读 · 0 评论 -
素数埃氏筛发
题目:求从2开始的第N个素数n/Math.log(n) < N N代表第N个素数 n代表要遍历的数据规模(数学公式 我们拿来用就好了)从2遍历到n,如果未被标记过说明是素数,那么它的倍数一定是合数,从它的第二倍开始遍历一直遍历到n,将素数的倍数都标记为合数。 /** * 埃氏筛法 耗时 是普通方法的1/10 * 求第N个素数 * @p...原创 2020-04-09 06:24:05 · 158 阅读 · 0 评论 -
蛇形填数
点击看原题:蛇形填数#include<stdio.h>#include<string.h>#define A 10int a[A][A];int main(){ int n,x,y,t=0; scanf("%d",&n); memset(a,0,sizeof(a)); t = a[x=0][y=n-1]=1; ...原创 2018-09-26 20:42:37 · 148 阅读 · 0 评论 -
十种常见排序算法 JAVA版
十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。根据此表整理了排序对比图,其中1. 柱状图蓝色表示是稳定的,柱状图黄色表示不...原创 2020-01-17 21:48:40 · 266 阅读 · 0 评论 -
数据结构-各种 排序算法总结
https://blog.youkuaiyun.com/weixin_40205234/article/details/86699088快速排序:https://blog.youkuaiyun.com/adusts/article/details/80882649https://blog.youkuaiyun.com/MoreWindows/article/details/6684558转载 2019-01-31 21:24:52 · 314 阅读 · 0 评论 -
算式最大值 JAVA
最近写了这道题,发现网上的题解还是有不少问题的,没有一个自己满意的(考虑问题有些不全面),所以自己写了一个题解(有问题欢迎指正。。。)完全贪心时间限制:10000ms单点时限:1000ms内存限制:256MB描述给定:1)N个正整数A1, A2, ... AN; 2)P个加号+和Q个减号-; (P+Q=N-1) 3)K对括号() 请你使用全部整数、加减号和括号,...原创 2018-12-18 07:59:38 · 414 阅读 · 0 评论 -
hihoCoder 1473 小Ho的强迫症(贝祖定理)
时间限制:10000ms单点时限:1000ms内存限制:256MB描述小Ho在一条笔直的街道上散步。街道上铺着长度为L的石板,所以每隔L距离就有一条石板连接的缝隙,如下图所示。小Ho在散步的时候有奇怪的强迫症,他不希望脚踩在石板的缝隙上。(如果小Ho一只脚的脚尖和脚跟分别处于一条缝隙的两侧,我们就认为他踩在了缝隙上。如果只有脚尖或脚跟接触缝隙,不算做踩在缝隙上) 现在我们已...原创 2018-12-17 12:07:34 · 233 阅读 · 0 评论 -
JAVA高精度算法 BigInteger用法详解 大数四则运算
在用C或者C++处理大数时感觉非常麻烦,但是在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。这两个类都在java.math.*包中,因此每次必须在开头处引用该包。自我感觉有时候用JAVA AC题比C/C++还要快,java内部有功能强大的内部类,NICE!...原创 2018-11-23 17:20:47 · 1092 阅读 · 0 评论 -
求最大公约数与最小公倍数 (辗转相除法+更相减损法+Stein算法)
辗转相除法与更相减损法对比:(1)两者都是求最大公因数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形式来看,辗转相除法体现结果是以相除余数为0则得到,而更相减损术则以减数与差相等而得到。更相损减法在两数相差较大时,时间复杂度容易退化成O(N),而辗转相除法可以稳定在O(...原创 2018-09-16 14:16:33 · 1347 阅读 · 0 评论 -
KMP 算法 KMP next数组 C++ JAVA
视频链接:KMP视频讲解#include<bits/stdc++.h>using namespace std; //求next数组void prefix_table(char pattern[],int prefix[],int n){ prefix[0]=0; int len = 0; int i = 1; while(i < n){ if(patter...原创 2019-06-30 14:11:18 · 173 阅读 · 0 评论 -
ACM进阶计划
ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有:l C/C++两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。以下学习计...原创 2019-01-21 11:47:29 · 230 阅读 · 0 评论 -
求一段区间内的素数的两种不同算法&&& 筛选法 和我们常用的算法(其实我不知道他叫什么名字)
筛选法:点击打开链接#include<stdio.h>int main(){ int prime[10000]={0}; int i,j; int n; scanf("%d",&n); prime[0]=prime[1]=1; for(i=2;i<n;i++) if(prime[...转载 2018-06-21 19:31:13 · 235 阅读 · 0 评论 -
NYOJ 495 少年DXH (两种不同算法的对比)
少年 DXH 点击打开链接 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 大家都知道,DXH 幼时性格怪癖,小朋友都不喜欢和他玩,这种情况一直到 DXH 的少年时期也没有改变。少年时期的 DXH 迷上了"回文串",“回文串”是指正着读倒着读都一样的字符串。DXH一个人的时候喜欢在地上随...原创 2018-06-19 12:42:37 · 212 阅读 · 0 评论 -
Nyoj 585 取石子(六)问题 (亦或运算符的使用)
点击打开链接取石子(六) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 最近TopCoder的PIAOYI和HRDV很无聊,于是就想了一个游戏,游戏是这样的:有n堆石子,两个人轮流从其中某一堆中任意取走一定的石子,最后不能取的为输家,注意: 每次只能从一堆取任意个,可以取完这堆,但不...原创 2018-06-18 10:40:55 · 228 阅读 · 0 评论 -
中原工学院第九届ACM程序竞赛 问题B :CLS LOVE EVEN FIB !
中原工学院第九届ACM程序竞赛 问题B :CLS LOVE EVEN FIB !题目描述: CLS最近喜欢上了fib数列,他的表达式是这样的 (fib(i)=fib(i-1)+fib(i-2))%997,特别有:fib(1)=fib(2)=1,cls尤其喜欢偶数,所以他想知道某一区间内的fib数有多少个为偶数?输入:单组测试数据。 第一行一个整数N表示数列的长度(n&l...原创 2018-06-15 22:40:23 · 444 阅读 · 0 评论 -
NYOJ 24 素数距离问题
NYOJ 24 素数距离问题描述 点击打开链接现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。如果输入的整数本身就是素数,则输出该素数本身,距离输出0输入第一行给出测试数据组数N(0<N<=10000)接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B...原创 2018-06-15 21:53:26 · 225 阅读 · 0 评论 -
尼姆问题 POJ1704Georgia and Bob 高僧斗法 JAVA
尼姆问题原理:点此链接POJ1704 Georgia and Bob异或运算 题意:每次玩家选择一个棋子时,将其向左移动而不会越过其他棋子或越过左边缘。玩家可以自由选择棋子移动的步数,但必须限制棋子至少移动一步,并且一个网格最多只能包含一个棋子。无法采取行动的玩家将输掉比赛。import java.util.Arrays;import java.util.Scan...原创 2020-03-10 17:31:55 · 230 阅读 · 0 评论 -
leetCode 寻找重复的子树
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / \ 2 3 / / \ 4 2 4 / 4下面是两个重复的子树: 2 / 4...原创 2020-03-03 08:23:09 · 188 阅读 · 0 评论 -
蓝桥杯 立方体 JAVA解法
描述 小Hi在水平桌面上放置了一个立方体。初始时,上下左右前后6个面的编号依次是1、6、4、3、2、5。 现在立方体经过若干次翻滚,每次翻滚是向前翻滚90度(F)、向后翻滚90度(B)、向左翻滚90度(L)、向右翻滚90度(R)之一。 请你计算翻滚后上下左右前后6个面的编号依次是多少?输入 一个由FBLR组成的序列。 长度不超过100。输出 输出6行,每行一个...原创 2018-12-09 18:10:57 · 740 阅读 · 0 评论 -
N皇后问题 + 汉诺塔(递归)
N皇后问题是典型的递归问题,现在先把题目要求描述一下:样例输出:2 4 1 33 1 4 2展示一种解法:#include<iostream>#include<cmath>using namespace std;int N;int queenPos[100];void NQueen(int k){ int i; if(k...原创 2018-09-15 11:18:28 · 230 阅读 · 0 评论