算法的设计与实现
算法
我要出家当道士
春有百花秋有月,夏有凉风冬有雪,若无闲事挂心头,便是人间好时节。 饥来食,困则眠,热取凉,寒向火。平常心即是自自然然,一无造作,了无是非取舍,只管行住坐卧,应机接物。
展开
-
C批量读取wget的下载日志中的信息
C批量读取wget的下载日志中的信息原创 2020-12-23 12:59:32 · 351 阅读 · 0 评论 -
算法时间复杂性分析
算法时间复杂性分析原创 2020-10-26 16:48:05 · 1634 阅读 · 0 评论 -
四则运算表达式C++实现
#include<iostream>#include<stack>#include<string>using namespace std;/**判断操作数的优先级 */int priority(int state,char a){ int result; switch (a){ case '+': case '-': result ...原创 2019-11-11 21:36:01 · 1207 阅读 · 2 评论 -
圆排列(去除全排列重复、全排列镜像)
以下代码思路一样,第一个处理手段比较容易想到,只在最后一位比较与第一位的大小;第二个空间换时间,第三个在递归过程中进行处理筛选。算法解法容易想到,难点在于处理全排列镜像方面,当然做出来也不难,难的是如何全排列出需要的一半并降低一半的时间复杂度 。主要的思路就是让第一位小于等于最后一位,这个可以在递归中制定规则来筛选,如第三种方法;也可以在开始时就筛选出来,确定第一位和最后一位,那么是需要对2~...原创 2019-11-30 18:10:30 · 2088 阅读 · 0 评论 -
0-1背包(分支限界法)
采用两种分支限界法来解决0-1背包问题,即采用队列式分支限界法和优先队列式分支限界法原创 2019-12-17 17:03:20 · 4224 阅读 · 2 评论 -
2018年第九届蓝桥杯C/C++程序设计本科B组
1.第几天2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?注意:需要提交的是一个整数,不要填写任何多余内容。解析:计算器,excle都行,写程序反而有点费时。答案:1252.明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可...原创 2019-03-23 18:11:12 · 373 阅读 · 0 评论 -
蓝桥杯省赛前一周总结
已经大四了,本来不准备再参加蓝桥杯。老师为了保险,让大四的再参加一届,唉~,再发挥一波余热吧,为学校多做些贡献。近来事情还是比较多的,考研考得不好,忙活调剂复试的事,还得腾出时间写写毕设,所以现在才开始准备竞赛,准备每天花两小时练练手,希望顺利进省一,不然太丢人了。接下的准备每天更一篇博客,刷刷题,把一些感悟思想记录一下。...原创 2019-03-17 19:38:44 · 745 阅读 · 0 评论 -
历年蓝桥杯本科B组决赛试题总结与解题答案
1,2012年第三届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案2,2013年第四届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案3,2014年第五届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案4,2015年第六届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案5,2016年第七届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案6,17年蓝桥杯本科B组决赛--对局匹配7,17年...原创 2018-05-22 15:41:55 · 2334 阅读 · 0 评论 -
2014第五届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案
一,年龄巧合小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是2014年,并且,小明说的年龄指的是周岁。请推断并填写出小明的出生年份。注意甄别它表弟#include <stdio.h>int main(void){ int i=0,j=0,k=0; int year = 0,num=0...原创 2018-05-21 20:44:24 · 816 阅读 · 0 评论 -
2013第四届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案
1,猜灯谜A 村的元宵节灯会上有一迷题:请猜谜 * 请猜谜 = 请边赏灯边猜小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字。请你用计算机按小明的思路算一下,然后提交“请猜谜”三个字所代表的整数即可。解题思路:思路很多:穷举,全排列。我写了一种不常见的。#include <stdio.h>#define M 900#define N 10int judge(int ...原创 2018-05-21 20:30:30 · 1103 阅读 · 0 评论 -
2012第三届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案
个人见解,不足之处还望指出一:星期几1949年的国庆节(10月1日)是星期六。 今年(2012)的国庆节是星期一。那么,从建国到现在,有几次国庆节正好是星期日呢?只要答案,不限手段!可以用windows日历,windows计算器,Excel公式,。。。。。当然,也可以编程!不要求写出具体是哪些年,只要一个数目!千万不要提交源代码!答案:9二:数据压缩某工业监控设备不断发回采样数据。每个数据是一个整...原创 2018-05-10 21:09:41 · 1337 阅读 · 0 评论 -
KMP思路介绍和代码
一般匹配字符串时,我们从目标字符串str(假设长度为n)的第一个下标选取和ptr长度(长度为m)一样的子字符串进行比较,如果一样,就返回开始处的下标值,不一样,选取str下一个下标,同样选取长度为n的字符串进行比较,直到str的末尾(实际比较时,下标移动到n-m)。这样的时间复杂度是O(n*m)。而KMP算法:可以实现复杂度为O(m+n)为何简化了时间复杂度: 充分利用了目标字符串p...转载 2018-05-04 16:27:00 · 370 阅读 · 0 评论 -
2015第六届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案
积分之迷小明开了个网上商店,卖风铃。共有3个品牌:A,B,C。为了促销,每件商品都会返固定的积分。小明开业第一天收到了三笔订单:第一笔:3个A + 7个B + 1个C,共返积分:315第二笔:4个A + 10个B + 1个C,共返积分:420第三笔:A + B + C,共返积分....你能算出第三笔订单需要返积分多少吗?答案:105#include <stdio.h>int main...原创 2018-05-03 18:57:13 · 1136 阅读 · 0 评论 -
15年蓝桥杯真题——完美正方形
如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。 历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60 如【图1.png】那样组合,就是一种解法。此时, 紧贴上边沿的是:60 50 紧贴下边沿的是:26 28 17 21 18 ...原创 2018-05-02 16:41:42 · 1198 阅读 · 0 评论 -
N皇后问题(递归与非递归解法)
最近算法老师讲到了N皇后问题,我顺便在这边总结一下他的思路,主要还是深搜加剪枝.解题思路:用数组c存储每个皇后在下标行中的位置(即列),然后进行深搜加剪枝判断,如果不符合条件了,则回朔.思路很简单,下面的代码包含两种解法.#include <stdio.h>#include <stdbool.h>#define M 8 //修改此处改变皇后的基数bool chec...原创 2018-05-02 10:10:19 · 1848 阅读 · 0 评论 -
程序运行时间计算
在竞赛的时候,大多 有程序运行时间的要求,但很多时候我们对自己写的程序运行时间并不清楚,下面的代码就是计算运行时间的。#include <stdio.h>#include <time.h>int main(void){ clock_t start,finish; //开始变量,和结束变量 long i = 1000000,j = 0; start = clock...原创 2018-04-26 19:00:29 · 887 阅读 · 0 评论 -
2016第七届蓝桥杯国赛决赛c/c++本科B组试题总结及解题答案
16年决赛的真题,个人见解,有不足之处还望指点。(后面两题,我尽量补上)第一题:一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里。 矿车停在平直的废弃的轨道上。 他的面前是两个按钮,分别写着“F”和“B”。 小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退。 按F,会前进97米。按B会后退127米。 透过昏暗的灯光,小明看到自己前方1米远正好有个...原创 2018-04-25 11:37:00 · 2100 阅读 · 1 评论 -
C++中string类型insert方法用法集锦
C++方法的用法真的太多了,一个insert方法用法就多达8种,一不留神就用错来了,很神伤。// inserting into a string#include <iostream>#include <string>int main (){ std::string str="to be question"; std::string str2="the ";...原创 2018-04-24 16:25:25 · 19930 阅读 · 1 评论 -
17年蓝桥杯本科B组决赛--对局匹配
小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, ... AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用...原创 2018-04-22 19:57:37 · 1297 阅读 · 2 评论 -
17年蓝桥杯本科B组决赛--发现环
小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?输入--...原创 2018-04-22 19:46:37 · 930 阅读 · 0 评论 -
STL介绍
先前参加了蓝桥杯的省赛,侥幸进入了国赛,本来是准备全心考研,但又多了这么一次机会,那就好好准备吧。此前对于算法,我一直都是用纯C来编写,认为算法应该就是这么纯粹。经过辅导老师点拨,国赛时纯C的算法很大可能会超时,所以为了能取得好成绩,还是了解一下吧。一,STL的组成部分 1).容器(containers):是一种数据结构容器,使用类模板的方法提供,我们可以方便的进行数据的存储操作 2)...原创 2018-04-16 17:31:49 · 245 阅读 · 0 评论 -
2015年第六届蓝桥杯省赛(C/C++)题目与解析
最近做蓝桥杯真题,做到15年时发现百度搜索的真题和解析比较少,所以来总结一下。 1. 奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。请提交该数字(...原创 2018-03-29 20:37:05 · 1037 阅读 · 0 评论 -
17年蓝桥杯-k倍区间
给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗? 输入-----第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <= 1...原创 2018-03-28 12:12:48 · 142 阅读 · 0 评论 -
17年蓝桥杯-分巧克力
儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小...原创 2018-03-28 11:06:04 · 326 阅读 · 1 评论 -
17年蓝桥杯-包子凑数
小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无...原创 2018-03-27 18:11:24 · 356 阅读 · 0 评论 -
17年蓝桥杯-日期问题
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。 比如02/03/04,可能是2002年03月04日、2004年02月03日或200...原创 2018-03-27 17:24:37 · 432 阅读 · 0 评论 -
承压计算
X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7 2 ...原创 2018-03-27 12:13:21 · 273 阅读 · 0 评论 -
地宫取宝
X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。 ...原创 2018-03-26 19:46:53 · 361 阅读 · 0 评论 -
14年蓝桥杯-蚂蚁爬树
长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。【数据格式】 第一行输入一个整数n (1 <...原创 2018-03-26 19:33:39 · 467 阅读 · 0 评论 -
14年蓝桥杯-六角填数
如图所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?请通过浏览器提交答案,不要填写多余的内容。答案为:10解题思路:将1~12剩余没填入的数字放入一个数组中,对他进行全排列,并判断每一种排列是否符合条件代码:#include <stdio.h>#define M 10in...原创 2018-03-26 19:16:15 · 307 阅读 · 0 评论 -
树状数组讲解
最近做14年蓝桥杯第十题,需要了解一下树状数组。在网上找了一篇大神写的,个人感觉特别好,所以转载分享一下。出处:点击打开链接引入如果给你n个数,然后进行q次询问,每次询问一个区间[x,y]的和,你会怎么做? 第一种方法:最简单的方法,用数组存起来,每次枚举x-y,ans加起来就可以,时间复杂度O(qn),十分慢。 第二种方法:或许大多数人会使用前缀和数组:sum[i]=a[1]+a[2]+...转载 2018-03-26 18:59:46 · 191 阅读 · 1 评论 -
分治法---查询数组中第k个元素
这篇博客讨论的题目很简单,就是标题所示,高效的查询数组中第k个大元素,比如一个数组中拥有1~10,乱序后第三个大元素就是3。 解决这题的方法很多,你可以: 1,先给数组排序,再直接选取第k个元素,思路简单,时间复杂度最小为o(nlogn); 2,还可以逐个排除,先排除最小的,这样接连排除k次后,就可以得到了,这个时间复杂度为o(n2) 3,用...原创 2018-03-21 11:20:22 · 1111 阅读 · 0 评论 -
插入排序
//非降序排列,插入排序 /**从数组的第二位开始,将数组当前位的值与其之前的数进行比较,*如果大于当前位,则向后移动,直到遇到小于当前位的数,退出并与最近一次比较并大于当前位的数交换 *因为是从第二位开始的,所以逐步向后可以达到排序的目的,并且比较顺序随数组元素的大小分布变化,优于选择排序 */#include <stdio.h>#define M 8 int mai...原创 2018-03-19 19:47:37 · 113 阅读 · 0 评论 -
二叉树遍历(已知前序和后序遍历,求中序遍历的可能的序列数)
题目描述Description 我们都很熟悉二叉树的前序、中序、后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给定一棵二叉树的前序和后序,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树: 所有这些二叉树都有着相同的前序遍历和后序遍历,但中序遍历却不相...原创 2018-03-19 17:18:02 · 29076 阅读 · 7 评论 -
多数元素
定义:序列中的多数元素是指在一个元素个数为n的序列中,多数元素出现次数大于[n/2].这题解题思路有很多,可以暴力破解,时间复杂度为O(n2);也可以先排序再加以判断,时间复杂度为O(nlogn);下面的解法时间复杂度为O(n),值得看一下。算法思路:在原序列中去除两个不同的元素后,原序列中的多数元素在新序列中还是多数元素。//多数元素(一个数组中一个元素出现的次数超过数组长度的一半) #in...原创 2018-03-16 10:54:26 · 368 阅读 · 0 评论 -
CODEVS-1008 选数
题目描述 Description已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例...原创 2018-03-15 15:14:28 · 568 阅读 · 0 评论 -
分治算法基本思想
在一个给定数组中查找最大值和最小值是一类常见的问题,也是解决其他一些算法的基础。假设给定数组为a,数组中含有n个元素,一般的算法是在数组中进行直接查找,算法伪代码如下:1. x←a[0]; y←a[0]2. fori←2 to n3. if a[i]<x then x←a[i]4. if a[i]>y then y←a[i]5. endfor6. return(x,...原创 2018-03-14 17:09:53 · 4382 阅读 · 1 评论 -
大规模时间计算
题目描述 Description假设现在是2013年1月1日0:00分00秒,现在给出一个秒数S,求过S秒后时那年那月那日几时几分几秒.(设每月30天)输入描述 Input Description(多数据) 每行一个正整数S,当S=0时,输入结束。输出描述 Output Description每行以XnXyXrX:X:X(小时化为24小时制)样例输入 Sample Input5100864000...原创 2018-03-12 20:42:49 · 163 阅读 · 0 评论 -
CODEVS-孪生蜘蛛
题目描述 Description在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道。根据防护中心的消息,敌方已经有一只特种飞蛾避过第二层防卫,直逼内城南端通道入口。但优秀的蜘蛛已经在每个通道内埋下了坚固的大网,无论飞蛾进入哪个通道,他只有死路一条!(因为他是无法挣脱超级蛛网的)现在,001和002分别驻扎在某两个通道内。各通道通...原创 2018-03-10 15:57:14 · 153 阅读 · 0 评论 -
16年蓝桥杯第九题-交换瓶子
有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N<10000), 表示瓶子的数目第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。输出数据...原创 2018-03-08 19:53:52 · 766 阅读 · 0 评论