- 博客(61)
- 收藏
- 关注
原创 Python 第一部分 起步
Python 第一部分 起步1.1 搭建编程环境 1.1.1 Python2和Python3 当前,Python有两个不同的版本:Python2和Python3。如果你的系统安装了两个这两个版本,那么请使用Python3;如果没有安装Python,请安装Python3;如果只安装了Python2,也可直接使用它来编写程序,但还是尽快升级到Python3为好,
2017-09-11 22:45:26 1334
原创 KMP算法
KMP算法是一种改进的字符串匹配的算法。1.关键是利用匹配失败后的信息,尽量减少模式串和朱穿的匹配次数以达到快速匹配的目的。具体实现就是实现一个next[]函数,函数本身包含了模式串的局部匹配信息。2.执行时间:O(m+n),其中m,n代表字符串S和T的长度。代码:#include#includeusing namespace std;int next[100];
2016-05-19 20:22:11 632
原创 模式匹配算法(BF)
BF(Brute Force)算法是普通的模式匹配算法。1.其思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,一次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。2.最好情况:O(m+n);最坏情况:O(m*n),其中m,n代表字符串S和T的长度。代码:
2016-05-19 20:13:33 1049
原创 队列的顺序存储——循环队列
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表。1.允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端称为队头。队列的这种首尾相接的顺序存储称为循环队列。1.为了实现元素出队之后,不移动其他的数据元素,并且可以循环利用空闲下来的数组空间。2.队空的条件:start==rear。3.队满的条件:(rear+1)%QueueSize==start。
2016-05-16 23:55:54 1263
原创 栈的链接存储——链栈
通常链栈用单链表表示,因此其结点结构与单链表的结点结构相同。因为只能在栈顶执行插入和删除操作,显然以单链表的头部做栈底是最方面的,而且没有必要像单链表那样为了运算方便附加一个头结点。代码:#includeusing namespace std;#define null 0struct Node{ int data; Node *next;};
2016-05-16 23:46:28 968
原创 栈的顺序存储——共享栈
代码:#includeusing namespace std;const int MaxSize=100;class BothStack{private: int data[MaxSize]; int top1,top2;public: BothStack(){top1=-1;top2=MaxSize;} BothStack(int a[],i
2016-05-16 19:15:01 1649
原创 栈的顺序存储——顺序栈
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。1.向一个栈插入新元素又称为进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之称为新的栈顶元素。2.从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。代码:#includeusing nam
2016-05-16 19:09:08 1194
原创 蓝桥杯:图形显示
题目: 编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数): * * * * * * * * * * * * * * *代码:#includeusing namespace std;int main(){ int n; cin>>n; if(n<=0) return 0;
2016-05-15 19:56:51 1062
原创 蓝桥杯:排序
题目:编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。 输入格式:输入只有一行,即三个整数,中间用空格隔开。 输出格式:输出只有一行,即排序后的结果。 输入输出样例样例输入9 2 30样例输出30 9 2代码:#include#includeusing namespace std;bool cmp(int
2016-05-15 15:27:50 552
原创 蓝桥杯:2的次幂表示
题目:任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0
2016-05-15 15:19:11 1637
原创 蓝桥杯:前缀表达式
题目:编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。 输入格式:输入只有一行,即一个前缀表达式字符串。 输出格式:输出相应的计算结果(如
2016-05-15 14:46:16 1550
原创 蓝桥杯:Anagrams问题
题目:Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。 输入格式:输入有两行,分别为两个单
2016-05-15 14:33:22 686
原创 蓝桥杯:出现次数最多的整数
题目:编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 输出格式:输
2016-05-14 23:12:19 1173
原创 蓝桥杯:字串统计
题目:给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。输入格式 第一行一个数字L。 第二行是字符串S。 L大于0,且不超过S的长度。输出格式 一行,题目要求的字符串。 输入样例1: 4 bbaabbaaaaa 输出样
2016-05-14 22:30:15 2291 1
原创 线性表的链接存储——循环双链表
在单链表的每个结点中再设置一个指向其前驱结点的指针域,这样就形成了双链表,再将头结点和尾结点连接起来也就能构成循环双链表。1.无论是插入还是删除操作,对链表中开始结点、终端节点和中间任意结点的操作过程相同。2.设指针p指向循环双链表中的某一结点,则循环双链表具有如下对称性:(p->prior)->next=p=(p->next)->prior代码:#includeusi
2016-05-14 14:21:23 623
原创 线性表的链接存储——单链表
单链表是用一组任意的存储单元存放线性表的元素。1.为了能正确表示元素之间的逻辑关系,没个存储单元在存储数据元素的同时,还必须存储其后继元素所在的地址信息,这个地址信息称为指针,这两部分组成了数据元素的存储映像,称为结点。2.单链表中每个结点的存储地址存放在其前驱结点的next域中,而第一个元素无前驱,所以设头指针(head pointer)指向第一个元素所在结点(称为开始结点),整个单链表
2016-05-14 13:31:40 1864
原创 线性表的顺序存储——顺序表
线性表,简称表,是n(n>=0)个具有相同类型的数据元素的有限序列。1)线性表是一个相当灵活的数据结构,对线性表的数据元素不仅可以进行存取访问,还可以进行插入和删除等操作。2)a1称为第1个元素,an称为最后一个元素,任意一对相邻的数据元素a(i-1)和a(i) (1序偶关系,且a(i-1)称为a(i)的前驱,a(i)称为a(i-1)的 后继。在这个序列中,元素a1无前驱,元素
2016-05-14 13:20:56 1004
原创 蓝桥杯:矩阵乘法
题目:描述 输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2
2016-05-13 21:03:52 1084
原创 蓝桥杯:大小写转换
题目:编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。 输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。 输出格式:输出经过转换后的字符串。 输入输出样例样例输入AeDb样例输出aEdB代
2016-05-13 20:49:09 566
原创 蓝桥杯:动态数组使用
题目:从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。要求尽可能使用函数实现程序代码。平均值为小数的只保留其整数部分。样例输入53 4 0 0 2样例输出9 1样例输入73 2 7 5 2 9 1样例输出29 4代码:#includeusing namespace std;int Sum(in
2016-05-13 20:25:21 667
原创 蓝桥杯:删除数组零元素
题目:从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。 样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
2016-05-13 20:15:54 1777
原创 蓝桥杯:最小乘积(基本型)
题目:给两组数,各n个。 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25输入格式 第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数
2016-05-12 21:09:02 1496
原创 蓝桥杯:Torry的困惑(基本型)
题目:Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。输入格式 仅包含一个正整数
2016-05-12 20:44:14 766
原创 蓝桥杯:寻找数组中最大值
题目:对于给定整数数组a[],寻找其中最大值,并返回下标。输入格式 整数数组a[],数组元素个数小于1等于100。输出数据分作两行:第一行只有一个数,表示数组元素个数;第二行为数组的各个元素。输出格式 输出最大值,及其下标样例输入33 2 1样例输出3 0代码:#include#includeusing namespace std;
2016-05-11 21:26:14 961
原创 蓝桥杯:K好数
题目:如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对100000000
2016-05-11 17:34:24 594
原创 蓝桥杯:最大最小公倍数
题目:已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 分析:1.我是写出一些数字来,觉得肯定是越靠后的数的组合的最小公倍数越大,所以就找最后几位数来找规律。2,.最开始的时候没有发现
2016-05-11 16:30:47 556
原创 蓝桥杯:区间K大数查询
题目:给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数,表示询问的答
2016-05-09 21:38:56 503
原创 蓝桥杯:回文数
题目:1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式 按从小到大的顺序输出满足条件的四位十进制数。代码:#includeusing namespace std;int main(){ for(int i=1000;i<10000;i++){ int a=i/1000; int b=i%1000/1
2016-03-27 20:26:32 773
原创 蓝桥杯:特殊的数字
题目:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。代码:#includeusing namespace std;int main(){ for(int i=100;i<1000;i++){
2016-03-27 20:24:42 652
原创 蓝桥杯:杨辉三角形
题目:杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行: 1 1 1 1 2 11 3 3 1给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输
2016-03-27 20:22:33 1011
原创 蓝桥杯:查找整数
题目:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61 9 4 8 3 99样例输出
2016-03-27 20:13:55 815
原创 蓝桥杯:数列特征
题目:给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1
2016-03-27 20:11:39 528
原创 蓝桥杯:字母图形
题目:利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出
2016-03-27 20:08:47 3962 5
原创 蓝桥杯:01字符串
题目:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出00000000010001000011分析
2016-03-27 20:02:31 1549
原创 蓝桥杯:闰年判断
题目:给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:1. 年份是4的倍数而不是100的倍数;2. 年份是400的倍数。其他的年份都不是闰年。输入格式输入包含一个整数y,表示当前的年份。输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格
2016-03-27 20:00:15 503
原创 蓝桥杯:回形取数
题目:回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。样例输入3 31 2 34
2016-03-10 20:26:42 5558 8
原创 蓝桥杯:阶乘计算
题目:输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了
2016-03-09 17:21:18 2150 2
原创 蓝桥杯:高精度加法
题目:输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位
2016-03-08 21:07:30 2732 1
原创 蓝桥杯:龟兔赛跑预测
题目:话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不
2016-03-08 20:39:32 4388
原创 蓝桥杯:Sine之舞
题目:最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+...sin(n))...) Sn=(...(A1+n)A2+n-1)A3+...+2)An+1 FJ想让奶牛们计算Sn的值,请你
2016-03-07 20:55:27 2673
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人