hdoj 1321 反转句子字母顺序 ac 2011/10/05 #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int n; cin>>n; cin.ignore();//不可省略 ]; while(n--) { cin.getline(a,); strrev(a); cout<<a<<endl;…
pala提出的问题: 十本不同的书放在书架上.现重新摆放,使每本书都不在原来放的位置.有几种摆法?  这个问题推广一下,就是错排问题: n个有序的元素应有n!种不同的排列.如若一个排列式的所有的元素都不在原来的位置上,则称这个排列为错排.   HDOJ RPG的错排 Problem Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿,G是月野兔:第…
字符串算法 -- Manacher算法 首先介绍基础入门知识,以下这部分来着一贴吧,由于是很久之前看的,最近才整理一下,发现没有保存链接,请原创楼主见谅. //首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长. //这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, //这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了. //这一点一直是在做回文串问题中时比较烦的地方.这个算法还有一个很…
1. Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法. 2. Sunday算法其实思想跟BM算法很相似,只不过Sunday算法是从前往后匹配, 在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符. 如果该字符没有在匹配串中出现则直接跳过,即移动步长= 匹配串长度+ 1: 否则,同BM算法一样其移动步长=匹配串中最右端的该字符到末尾的距离+1. 3. 举例如下: //pos=0; //匹配串:abcdacdaahfacabcdabcde…
素数的两种打表法 下面介绍两种素数打表法,由于是两年前留下的笔记,所以没有原创链接~~ @_@!! 第一种疯狂打表法: #include<stdio.h> #include<math.h> #define N 100000 int a[N]; ]; int main() { int i,j,k,n; ;i<=N;i++)//初始化表一 a[i]=; n=(int)sqrt(N);//注意n!!! ;i<=n;i++)//表一进行打表 { for(j=i+i;j<=…
     DP -- Humble numbers  //一开始理解错题意了,题意是是说一些只有唯一一个质因数(质因数只包括2,3,5,7)组成的数组,请找出第n个数是多少 //无疑,先打表,否则果断超时 #include <iostream> using namespace std; ]; ] = {, , , }; ]; int main() { int i,j; ; i < ; i++) a[i] = ; ans[] = ; ; i < ; i++) { ; ; j <…
      HDOJ -- Phone list解题报告 问题描述:给出一些电话号码,如果有共同前缀则输出NO,如果没有则输出YES. 解题关键:将电话号码进行字符串排序,相邻的电话号码进行比较 Sample Input 2 3 911 97625999 91125426 5 113 12340 123440 12345 98346 Sample Output NO YES 代码如下: #include <iostream> #include <string> #include &…
 逆波兰表达式 //问题描述:逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2+3的 //逆波兰表达式法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必 //用括号改变运算次序.例如(2+3)*4的逆波兰表达式法为*+2 3 4.本题求解逆波兰表 //达式的值,其中运算符包括+.-.*./ 四个. //输入数据:输入为一行其中运算符和运算数之间都用空格分隔,运算数都是浮点数. //输出要求:输出为一行,即表达式的值. //输入样例:* + 11.0 12.0 +…
    KMP -- POJ3461解题报告 问题描述:给出字符串P和字符串T,问字符串P在字符串T中出现的次数 Sample Input 3 BAPC BAPC AZA AZAZAZA VERDI AVERDXIVYERDIAN Sample Output 1 3 0 简单KMP应用, 代码如下: //poj3461解题报告 #include<iostream> using namespace std; ], P[]; int len1, len2; ]; void getnext(char…
利用数组存放实现排序    hodj1425   321MS   2011/08 题意:输入n个数字,要求输出从大到小排序的前m个数 解题技巧:利用大数存储在数组后面,小数存储在前面,倒序输出完成从大到小排序 直接贴代码吧 —_—|| #include <iostream> #include <memory> using namespace std; ; int a[N]; int main() { ; int temp; while(scanf("%d%d",…
转自不正直的绅士,因百度空间迁移,无法注明出处,我从其google搜索引擎中的cache进行的copy. 不正直的绅士 是跟我一起工作过的非常有才的一个青年才俊. Paxos的使用非常广泛.sanlock也使用了paxos. 共研究Paxos算法的程序猿参考. Paxos算法小结 1 Paxos算法的背景1.1 State Machine Approach与一致性算法1.2 CAP理论与一致性算法2 Paxos算法2.1 Paxos算法的角色2.2 Paxos算法的描述2.3 Paxos算法的简…
剑指Offer--排序算法小结 前言 毕业季转眼即到,工作成为毕业季的头等大事,必须得认认真真进行知识储备,迎战笔试.电面.面试. 许久未接触排序算法了.平时偶尔接触到时自己会不假思索的百度,然后就是Ctrl+C.Ctrl+V,好点的话封装为一个排序工具供以后使用.这样的学习方法百害而无一益,只因自己缺少了思索,未能真正理解到算法的核心精髓所在.下面系统的对快速排序.堆排序.冒泡排序.插入排序.选择排序.归并排序.桶排序部分排序算法做一小结.望大家有所受益. 快速排序 介绍 快速排序采用的思想是…
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScript数据结构与算法>- 第3章 数组,本节将为各位小伙伴分享数组的相关知识:概念.创建方式.常见方法以及ES6数组的新功能. 数组 数组是最简单的内存数据结构,用于存储一系列同一种数据类型的值. 注:虽然数组支持存储不同类型的值,但建议遵守最佳实践. 一.数组基础 创建和初始化数组 new Array…
定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读<学习JavaScript数据结构与算法-第三版>的系列文章,主要讲述队列数据结构.双端队列数据结构以及队列相关应用. 队列 队列是遵循先进先出(FIFO)原则的一组有序的项.队列在尾部添加元素,并从顶部移除元素.最新添加的元素必须排在队列的末尾.现实中常见的队列就是排队,计算机科学中,常见的例子是打印队列,如文档按顺序打印,第一个发送到打印队列的文档优先被打印. 实现队列 /** *…
Shell数组以及排序算法(冒泡.直接选择.反转) 目录 Shell数组以及排序算法(冒泡.直接选择.反转) 一.数组概述 1. 数组的定义 2. 下标的定义 3. 数组的特点 4. 数组定义的方法 5. 元素的类型 二.数组的简单操作 1. 获取元素列表 2. 获取数据长度 3. 读取某下标赋值 4. 数组遍历 5. 数组切片 6. 数组元素替换 7. 数组元素追加 8. 数组删除 三. 向函数传数组参数 四.数组排序算法 1. 冒泡排序 (1)基本思想 (2)算法思路 (3)脚本编写 2.…
前言 算法这个东西其实在开发中很少用到,特别是web开发中,但是算法也很重要,因为任何的程序,任何的软件,都是由很多的算法和数据结构组成的.但是这不意味着算法对于每个软件设计人员的实际工作都是很重要的.每个项目特点和需求特殊也导致算法运用场景上不同.但是个人觉得算法运用的好的话会给自己在程序设计的时候提供比较好的思路.下面就对一些排序算法小结一下,就当做自己的一个笔记吧. 插入排序  1.简介 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序…
Dijkstra 算法小结  By Wine93 2013.11 1. Dijkstra 算法相关介绍 算法阐述:Dijkstra是解决单源最短路径的算法,它可以在O(n^2)内计算出源点(s)到图中任何顶点的最短路,但是该算法不能处理存在负权边的图(证明中会给出). Dijkstra一般有2种实现,一种采用邻接矩阵,复杂度为O(n^2),这种实现适用于稠密图 (边多点少),还有一种是采用临接表+heap(可用优先队列代替)实现,实现的复杂度为( m*log(n) )   (m为边数,n为顶点数…
ACM,算法 描述 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?   输入 有多组测试数据.第一行一个整数n,表示有n组测试数据.接下来的每行有一个整数m. 输出 输出第m个小光棍数. 样例输入 1 1 样例输出 471 #include <iostream> #include <str…
Evernote Export 算法的思想是能省则省,内存能少则少,时间运行能少尽量少 堆排序的时间复杂度O(nlogn) 堆排序的内置模块heapq 常用函数 heapify(x) heappush(heap, item) heappop(heap) topkey问题 现在有n个数,设计算法得到前k大的数(k>n) 解决思路:      排序后切片  O(nlogn)     排序lowB三人组 O(kn)     堆排序 O(nlogk) 堆排序解决思路     取列表前k个元素建立一个小根…
问题描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“Hello world!”,则输出“world! Hello”.   分析:   先翻转各个单词,然后整体翻转即可.   参考代码: // 10.cc #include <iostream> #include <cstring> #include <string> using namespace std; void r…
Floyd 算法小结  By Wine93 2013.11 1. Floyd算法简介 Floyd算法利用动态规划思想可以求出任意2点间的最短路径,时间复杂度为O(n^3),对于稠密图, 效率要高于执行|V|次Dijkstra算法. 核心代码如下: for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); 相关应用 : 有向图:①求任意2点间最短路径…
/*================================================== 单词倒排 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,读入一段英文(英文中不包含标点), 将所有单词的顺序倒排并输出,其中单词以空格分隔. 输入 输入为一个字符串(字符串长度最大为100) 输出 输出为按要求排续后的字符串 样例输入 I am a student 样例输出 student a am I 注:这个代码是覃宗华写的. =================…
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 比如将"I am a student"转化为"student a am I". #include <stdio.h> #include <string.h> //逆转字符串 char* Reverse(char *str, int len) { if(str == NULL || len <= 0) ret…
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“student. a am I”. #include<stdio.h> #include<assert.h> //45min void swap(char *a, char *b) { assert(a); assert(b); char temp; temp = *a; *a = *b; *b…
java排序算法(三)堆排序 堆积排序(HeapSort)是指利用堆积树这种结构所设计的排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法.辅助空间为O(1).最坏时间复杂度为O(nlog2n) 堆排序的堆序的平均性能较接近于最坏性能 堆排序利用大根堆(或者小根堆)堆顶记录的关键字最大(或者最小)这一特征.使得在当前无序区中选中最大(或者最小)关键字的记录变的简单 (1)最大堆的排序思想 · 1.先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 2.再将关键…
2018.10.26 浪在ACM 集训队第三次测试赛 今天是暴力场吗???????可怕 题目一览表 来源 考察知识点 完成时间 A 1275 珠心算测试 NOIP 普及组 2014 暴力??? 2018.11.2 B 1276 比例简化 NOIP 普及组 2014 暴力??? 2018.11.2 C 1277 螺旋矩阵 NOIP 普及组 2014 思维??? 2018.11.2 D 1278 子矩阵       E 1279 计数问题   暴力??? 2018.11.2 F 1208 表达式求值…
Java数据结构和算法(三)顺序存储的树结构 二叉树也可以用数组存储,可以和完全二叉树的节点一一对应. 一.树的遍历 // 二叉树保存在数组中 int[] data; public void preOrder() { preOrder(0); } // 前序遍历指定的节点 public void preOrder(int index) { System.out.printf(data[index] + " "); int leftIndex = 2 * index + 1; int r…
在实际过程中采用 Lucas-Kanade 光流算法跟踪运动物体特征点的时候,一个很明显的特点是LK算法(包括其他光流算法)不能计算"大运动",加上金子塔的方法稍微好点. 这是什么原因? 查看LK算法的三个假设: 1.亮度恒定: 2.时间连续或者运动是"小运动": 3.空间一致:同一子图像的像素点有相同的运动. 1和3都相对好理解,对于2,换句话,可以将运动的变化看成是亮度对时间的导数.如果距离比较大,那么求导之后是物体在这段时间内的平均速度,并不能反映物体在某一时…
[题目] 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“student. a am I”. [分析] 由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试.面试题的热门题目.本题也曾多次受到包括微软在内的大量公司的青睐. 由于本题需要翻转句子,我们先颠倒句子中的所有字符.这时,不但翻转了句子中单词的顺序,而且单词内字符也被…
Java排序算法(三) 三.Java排序算法总结 从这三组时间复杂度对比中,可以看出,堆排序和归并排序是不管在什么情况下发挥稳定的,快速排序好的时候表现如天才,坏情况下比较差强人意,甚至在等待排序个数小于50的时候还不如简单的冒泡,直接插入排序,选择排序. 从空间复杂度看,归并排序需要辅助空间,快速排序也有相应的空间需求,堆排序则是少量索取,大量付出. 从稳定性上看,归并排序独占鳌头. 总之,综合各项指标,经过优化的快速排序是性能最好的排序算法,但不同的场合我们也应该考虑使用不同的算法来应对.…