【2019 GDUT Winter Training V ( 算法优化)】教程文章相关的互联网学习教程文章

palindrome 回文 /// Manacher算法【代码】

判断最长不连续回文#include <bits/stdc++.h> usingnamespace std; int main() {char ch[1500];while(gets(ch)){int len=strlen(ch),dp[1500],ans=0;for(int i=0;i<len;i++)ch[i]=tolower(ch[i]),dp[i]=1;for(int i=0;i<len;i++){int cnt=0;for(int j=i-1;j>=0;j--){int tmp=dp[j];if(ch[i]==ch[j]) dp[j]=cnt+2;cnt=max(cnt,tmp);}}for(int i=0;i<len;i++) ans=max(ans,dp[i]);printf("%d\n",ans);}return0; }过程如图bbacbbbcad1...

算法训练 未名湖边的烦恼 (递推)【代码】

问题描述  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式  两个整数,表示m和n输出格式  一个整数,表示队伍...

数据结构与算法第12章 高级数据结构及其实现

这一章要讲的数据结构基本以实用为主。12.1 自顶而下的伸展树一些定义展开:对于树的操作,叶结点X被插入之后,经过旋转使X成为新的树根。摊还时间:在摊还分析中的一个概念,就是求一个操作的所有情况的平均时间。和O()的时间不同,后者体现的是最糟糕的情况下程序完成所要花费的时间。P345之中,还有一些内容不是很明白,比如图12.1之中,为什么旋转之后树之间是断开的。我不是很清楚这是怎么回事。原文:http://www.cnblogs.c...

字符串全排列和组合算法【代码】【图】

打印字符串的全排列算法的思路:把一个字符串分成两部分,第一个字符+后面部分所有的字符。这样就能够递归的求解整个过程了:1.每个字符都做一次首字符 2.当某个字符作为首字符的时候,求后面所有字符的全排列而这里的求后面所有字符的全排列可以看成递归的子问题 全排列的递归树:但是这里还有一个问题,那就是字符串中有重复的字符时,这样的算法会增加最后的结果数目。比如说字符串aab,a+ab的全排列,然后交换还是a+ab的全排列...

python数据结构与算法(7)【代码】【图】

单链表的操作is_empty() 链表是否为空 length() 链表?度 travel() 遍历整个链表add(item) 链表头部添加元素 append(item) 链表尾部添加元素 insert(pos, item) 指定位置添加元素 remove(item) 删除节点 search(item) 查找节点是否存在单链表的实现 class SingleLinkList(object): """单链表""" def __init__(self): ...

吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法【图】

本篇讲述了神经网络的误差反向传播以及训练一个神经网络模型的流程更多内容参考 机器学习&深度学习神经网络可以理解为两个过程:信号的正向传播和误差的反向传播。在正向的传播过程中,计算方法为Sj=wijxi+bj,其中i是样本、j是层数。然后xj=f(Sj),f为激活函数。引入激活函数的原因是可以带来一定的非线性特性。由于样本的y是在最后一层输出的,因此在计算误差的时候,需要从最后一层开始计算、针对与之关联的参数进行求梯度,获得...

高精度运算 Java算法【代码】

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。   计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C...

UVALive 3026 Period (KMP算法简介)【代码】【图】

kmp的代码很短,但是不太容易理解,还是先说明一下这个算法过程吧。朴素的字符串匹配大家都懂,但是效率不高,原因在哪里?匹配过程没有充分利用已经匹配好的模版的信息,比如说,i是文本串当前字符的下标,j是要匹配的模版串当前正在匹配的字符的下标。(下标都从零开始)当匹配到i = 4, j = 4的时候失配了,朴素的匹配做法是往右边移一位然后从j开始扫,这样做效率很低。不难发现前面已经匹配好的串ab是相同的最大前缀后缀。把串...

数据结构与算法-图的最短路径Dijkstra【代码】【图】

一 无向图单源最短路径,Dijkstra算法 计算源点a到图中其他节点的最短距离,是一种贪心算法。利用局部最优,求解全局最优解。 设立一个visited访问和dist距离数组,在初始化后每一次收集一个当前最短的节点cur并将其标记为visited,然后更新这个节点的未被收集临近节点的dist值 [ if ( visited[t] != True && (dis[cur]+ Graph[cur][t]) < dis[t] ) ],直到所有节点被访问。查找dist中的最短路径节点,可使用最小堆或二...

解决方案:System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。【代码】

System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.引发该问题的原因是系统启动了FIPS,导致.NET Framework平台中的MD5加密及其他一些加密方法需要调用FIPS验证,但FIPS又不支持这些方法,故引发如上异常。解决方法:注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy项目中,将Enabled值设置为0即可也可以...

自己实现KNN算法【代码】

import numpy as np from math import sqrt from collections import Counterclass KNNClassifier(object):"""docstring for KNNClassifier"""def__init__(self, k):assert k>=1,"k must be valid"self.k = kself._X_train = Noneself._y_train = Nonedef fit(self,X_train,y_train):‘‘‘根据训练数据集X_train和y_train训练KNN分类器‘‘‘self._X_train = X_trainself._y_train = y_trainreturn selfdef predict(self,X_predic...

数据结构-单向链表相关算法

#include <stdio.h>#include <stdlib.h>#define OVERFLOW -2#define OK 1#define ERROR 0typedef int ElemType;//单向链表结构体typedef struct LNode { ElemType data; struct LNode *next;}LNode,*LinkList;LinkList CreateList_L(LinkList L,int n);void TraverseList_L(LinkList L);int GetElem_L(LinkList L,int i,ElemType *e);LinkList ListInsert_L(LinkList L,int i,ElemType e);LinkList ListDelete(LinkList L,in...

【05】查找算法——顺序查找和二分查找【代码】

顺序查找,时间复杂度O(N); 二分查找,时间复杂度O(logN),但是二分查找要求顺序表。函数:enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中.enumerate(sequence,[start=0])seasons = [‘Spring‘, ‘Summer‘, ‘Fall‘, ‘Winter‘]list(enumerate(seasons))[(0, ‘Spring‘), (1, ‘Summer‘), (2, ‘Fall‘), (3, ‘Winter‘)]def li...

初识面试中的算法题

在面试过程中,常常被要求手撕代码,作者作为测试经理,也经常被手撕代码。手撕代码的内入无非是对字符串、数组、元组、字典进行操作。第一题:取值:1、从字符串及元组中取值str1 = "abcd"stra, strb, strc, strd=str1结果:"a","b","c","d"2、从数组中取值list1 = [a,b,c,d]lista = list1[0],以此类推,中括号中的数字是数组的下标,从0开始计数3、从字典中取值dic = {key1:value1,key2:value...}dic1= key14、数组的运算lst=[7...

php砍价算法【代码】

/*** 砍价算法-生成砍价金额** @author 宋健安<506780989@qq.com>** @param int $people 砍价人数或次数* @param int $amount 砍价总额* @param int $min 最低砍价金额 不得低于0* @param int $max 最高砍价金额 砍价次数 * 最高砍价金额不得小于砍价总额* @param int $level 层级 防止递归超出限制** @return array*/function genRandomAmount($people = 0, $totalAmount = 0, $min = 0, $max = 0, $level = 1) ...