自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Salvation

喜欢动漫, 美剧, 电影和代码的大二狗

  • 博客(42)
  • 收藏
  • 关注

原创 使用c3p0链接数据库

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。最近跟着教程学习spring, 在讲java bean的时候提到了这个, 使用xml配置文件可以配置jdbc, 首先在IDEA打开一个Spring文件, 然后添加三个包: mchange-commons-java-0.2.11.ja

2017-09-13 14:56:19 392

原创 Hdu 1728 逃离迷宫

Problem Description  给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程

2016-11-12 20:14:54 406

原创 [LeetCode] 89. Gray Code

The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gra

2016-11-10 21:25:15 328

原创 [LeetCode] 104. Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.题目就是说给你一棵二叉树, 求出这棵树的最大深度是多少对于二叉树, 使用递归去做

2016-11-07 20:24:03 238

原创 [LeetCode] 141. Linked List Cycle

Given a linked list, determine if it has a cycle in it. 给你一个单链表, 判断单链表是否有环. 非常非常非常简单的一题, 只需要使用两个指针, 一个指针每次移动到下一个节点, 另一个指针每次移动两个节点, 如果第二个指针移动到链表尾的话则说明该链表没有环, 如果两个指针指向的内容相等的话, 则说明该链表有环/** * Definition

2016-11-03 21:30:58 235

原创 [LeetCode] 134. Gas Station

There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its n

2016-11-02 22:40:14 330

原创 234. Palindrome Linked List 判断链表是否回文(C++解决)

Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time and O(1) space?就是判断一个单链表是否为回文. 想了一下只想到了翻转链表然后判断将原来的链表和当前翻转的链表一个个比较过去就好了./** * Definition for sin

2016-10-31 21:23:02 333

原创 [python爬虫入门]爬取豆瓣电影排行榜top250

要爬取内容的是豆瓣网的电影排行top250: https://movie.douban.com/top250, 将电影名和评分爬取下来并输出, 如下图: 使用了tkinter做了简单页面首先分析要爬取的url, 发现每个页面有25条内容, 总共有十页, 第一页的URL为https://movie.douban.com/top250?start=0&filter= 第二页的url为https://

2016-08-17 09:03:19 8164

原创 [python]解决Windows下安装第三方插件报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xcb in position 0:

系统:win10 IDE:pycharm Python版本:2.7 安装第三方插件是报错: 报错原因与编码有关,pip把下载的临时文件存放在了用户临时文件中,这个目录一般是C:\Users\用户名\AppData\Local\Temp,目录名中有中文,显然ascii这种编码是不支持的,因为我的用户名是中文的所以出现了错误,解决方法: 找到python2.7目录下的Lib文件夹中的ntp

2016-08-15 11:54:06 10879 8

原创 [算法学习笔记]动态规划之钢条切割问题

问题描述有一个长度为n的钢条需要切割成短钢条出售,长度不同的钢条售价也不同,如下: 长度i 1 2 3 4 5 6 7 8 9 10 价格p[i] 1 5 8 9 10 17 17 20 24 30那么怎么切割才能获得最大利益呢暴力解决思路只要列出每种切割方案,然后比较一下哪种切割方案利润最大不就可以了吗(手动滑

2016-08-05 14:10:46 1187 1

原创 [算法学习笔记] AVL树----带有平衡条件的二叉搜索树

图片及部分内容来自博客http://www.cnblogs.com/skywang12345/p/3576969.html 这个博客写的很用心,大家可以看看这个二叉搜索树关于二叉搜索树我之前的博客已经实现过了, 因为很多接口都是一样的, 可以先阅读之前的博客http://blog.csdn.net/u014235934/article/details/50924876 简单的说一下什么叫二

2016-07-27 18:49:29 1056

原创 [算法学习笔记]数据结构之栈和队列

栈栈是一种后进先出的数据结构 C++ 实现代码#include <iostream>using namespace std;class Stack{private: int *A; int maxSize; int curSize;public: Stack(); Stack(int maxSize); ~Stack(); bool i

2016-07-25 12:46:38 350

原创 [算法学习笔记]线性时间排序----计数排序

前面介绍的很多种排序算法都是基于比较的排序算法, 接下来介绍三种排序算法并不是基于比较的, 而且运行时间是线性, 但是它们的应用范围比起之前介绍的排序算法来说狭窄很多. 首先介绍是计数排序算法 计数排序假设n个输入元素都是在0到k的区间内的一个整数, k为某个整数 计数排序的基本思想是:对于输入的每一个元素x, 确定小于x的元素个数, 利用这一信息, 可以直接吧x放到它输出数组的位置上就

2016-07-24 19:10:58 328

原创 [算法学习笔记]几个排序算法的比较

前面的文章实现了六中排序算法, 分别是插入排序, 冒泡排序, 选择排序, 归并排序, 堆排序以及快速排序 当数组大小为100时它们的表现为: 明显看出冒泡和选择算法的速度较慢当数组大小为1W时: 最快的是快排算法, 其次归并排序算法, 对于插入排序来说,面对较大数量时, 性能下降明显当数组大小为10W时: 最快的快速排序算法和最慢的冒泡排序算法差了2000倍当然每台计算的性能都不

2016-07-24 15:58:28 376

原创 [算法学习笔记]又一个采用分治法的排序算法----快速排序算法

快速排序算法快速排序算法是当前在实际排序应用中最好的选择,虽然排序算法最坏情况下的时间复杂度为O(n^2), 但是可以通过随机化的方式避免最坏情况的发生, 而快速算法的平均复杂度为O(n lgn), 而且隐含的常数因子非常小, 因此效率十分高.算法详细快排和归并排序一样也是采用分治策略的排序算法, 分为三个步骤: 分解, 解决, 合并分解 将数组A[p…r]分解成两个子数组A[p…q-1]和A[

2016-07-24 15:45:33 4070

原创 [算法学习笔记]基于最大堆实现最大优先队列

何为优先队列 优先队列是计算机科学中的一类抽象数据类型。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务;优先级相同的元素按照其在优先队列中的顺序得到服务。优先队列往往用堆来实现。优先队列分为最大优先队列和最小优先队列, 本文实现的是最大优先队列. 优先队列会让优先级最高的元素优先出来. 和堆排序一样,最大优先队列也是基于最大堆来实现的. 一个优先队列实现以下几个操作:i

2016-07-24 11:56:47 561

原创 [算法学习笔记]排序算法——堆排序

堆排序堆排序(heapsort)也是一种相对高效的排序方法,堆排序的时间复杂度为O(n lgn),同时堆排序使用了一种名为堆的数据结构进行管理。二叉堆 二叉堆是一种特殊的堆,二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足堆特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆。 如上图显示,(a)是一个二叉堆(最大堆), (b)是这个二叉堆

2016-07-23 17:46:18 941

原创 [算法学习笔记]分治法——最大子序列和问题

何为分治法?在上一篇文章中讲到归并排序就有提到过分治法,这里在重复一次:分治法分治法采用了递归的结构,将原问题分成几个规模较小但是类似于原问题的子问题, 通过递归的方式再来求解这些小问题,然后将子问题的解合并来建立原问题的解,分治法在每成递归时都有三个步骤:分解: 将原问题分解成若干个小问题,这些子问题是原问题的规模较小的实例解决: 解决这些子问题,通过递归的方式求解子问题,直到自问题的规模足够

2016-07-22 16:52:56 13249 5

原创 [算法学习笔记]分而治之——归并排序

归并排序递归的概念递归的概念简单来说就是自己定义自己,来举一个简单的栗子: GNU是GNU is Not UNIX的缩写, 那么其中的GNU还是还是GNU is Not UNIX,即”GNU is Not UNIX” is Not UNIX。 上面这句话的最后一句的开头GNU还是GNU is Not UNIX,即“‘GNU is Not UNIX’ is not UNIX” is Not UNI

2016-07-21 20:41:15 2315

原创 [算法学习笔记]冒泡排序和选择排序

冒泡排序冒泡排序是最简单的一种排序方法,但是效率低下,冒泡排序对 {\displaystyle n} n个项目需要O( n^2)的比较次数。 上图是冒泡排序的动态图下面是c语言的实现#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAX_N 10void bubbleSort(int []);int main()

2016-07-21 18:03:24 660

原创 [算法学习笔记]排序——插入排序

插入排序 插入排序是最简单的一种排序方法,对于少量的数据排序是十分有效的。插入排序十分容易理解,平时玩扑克时,在理牌的过程中就是使用了插入排序的思想。 可以通过这张图片来直观的了解 下面是一张插入排序的动态图。 下面使用c语言来实现这一算法#include <stdio.h>void insertionSort(int [], int);int main(){ int num

2016-07-20 18:07:36 435

原创 Krito的讨伐(bfs加上优先队列)

DescriptionKrito终于干掉了99层的boss,来到了第100层。第100层可以表示成一颗树,这棵树有n个节点(编号从0到n-1),树上每一个节点可能有很多只怪物。 Krito现在在0号节点,现在它想要区清除这一层所有的怪物。他现在有atk大小的攻击力。只有当你的攻击力大于这只怪物的防御力时,你才可以打败他,同时每打败只怪物,你会获得一定的攻击力加成。一个节点可能存在着不止一只怪兽

2016-04-14 22:05:30 997

原创 利用栈ADT写了一个简单的四则混合运算

比较简单,只支持0-9的加减乘除和括号运算,有机会再改进// 四则运算1.0// 支持0-9的加减乘除计算#include #include #include #include #include #include using namespace std;string infixToPostfix(string exp);bool calculator(string pos

2016-04-14 17:05:48 966

原创 Qt实现记事本的打开和保存功能(第一个实用的Qt小程序)

学习qt也有两三天时间,Qt的学习资料比较少,相比C++而言, Qt的资料是比较小的,Qt5就更少了。这里我首先要推荐一个博客:www.devbean.net/2012/08/qt-study-road-2-catelog/对我学习Qt5很有帮助首先把主要的代码贴出来然后再解释一下吧:// mainwindow.h#ifndef MAINWINDOW_H#define MA

2016-03-30 23:16:07 6538 2

原创 终端实现局部清屏效果 WindowsAPI

#include #include using namespace std;int main(){ int n; cout << "请输入倒计时时间:"; cin >> n; for(int i = 0; i < 10; i++) cout << "===============\n"; // HANDLE GetStdHandle

2016-03-27 20:23:49 2185

原创 C语言完成2048,辣鸡代码(#滑稽#)

今天早上两点半起床太亢奋,于是写了这个2048终端版的游戏,其实2048实现起来还是比较简单的,基本和是哪个没有太深奥的东西,有点C语言基础还是能很容易的写下来。虽然是比较简单还是被我写出了四百多行,真实太辣鸡了(#滑稽#)#include #include #include #include int num[4][4];int socre;void display();voi

2016-03-27 13:24:28 3108

原创 走迷宫值路径记录

利用bfs走迷宫是最基础的方法,记录访问过的每个点然后回溯最短路径的点首先把问题简单化一下,只有墙壁和路,代码比较简单,只要会bfs基本上看得懂// 走迷宫记录路径// 概述:有一个N*M大小的迷宫,其中'#'代表墙壁无法通过,'.'代表路,每走一步都将花费1s的时间,求从起点(0,0)到终点(N-1,M-1)的最短路径,并将路径打印#include #include #inclu

2016-03-23 22:26:58 627

原创 二分图的判断 bfs+dfs两种搜索方法判断

二分图的定义是:给定一个具有n个顶点的图,要给每个顶点上色,并且使相邻的顶点颜色不相同。是否能用最多两种颜色进行染色?首先我们用邻接矩阵来模拟图,使用bfs对整个图遍历一遍#include #include #include using namespace std;const int MAX_N = 105;int V, E;// 代表点的颜色,初始化为0,1或-1表示

2016-03-23 15:40:09 5338

原创 素数环问题 HDU1016 DFS深搜

#include #include using namespace std;int num[22];bool vis[22];int n;// 素数判断bool prime(int n){ for(int i = 2; i *i <= n; i++) if(n % i == 0) return false; return true;}void

2016-03-22 23:06:47 365

原创 删数问题--贪心算法+string类的一些应用

先上题目:Description你有一个长度为n的数字串, 现在要求你删除其中k个数字, 使得剩下的数字在不改变原有顺序的情况下,组成的数字最大.Input每组数据包含一个数字串(1 Output对于每组数据, 输出你的答案.Sample Input1452 233 0Sample Output5233思路是这

2016-03-20 22:46:54 454

原创 优先队列和堆 实战:HDU1242

什么叫优先队列呢,能完成以下任务的就叫做优先队列:·插入一个数值·取出最小的数值(获取数值,并且删除)实现优先队列,应该使用二叉树完成,是一种叫二叉堆的数据结构(binary heap)二叉堆分为两种,最小堆和最大堆。最小堆是父节点的键值总是小于等于子节点的键值。最大堆是父节点的键值总是大于等于子节点的键值。可以将二叉堆看成数组的形式。代码:// 模拟最小堆//

2016-03-20 14:20:32 591

原创 实现二叉查找树 -- C语言

本文章参考了《数据结构与算法分析——C语言描述》这本书。书中写的还是挺透彻的首先介绍一下二叉树。什么是二叉树呢?二叉树(binary tree)是一棵树,其每个节点最多能有两个儿子。由于整个特性,实现二叉树的方式是创建两个指针分别指向左儿子和右儿子。二叉查找树是一种特殊的二叉树,其特点是:对于树的每个节点x,其左子树中所有关键字的值都小于x, 其右子树中所有关键字的值都大于x。其左右子

2016-03-18 16:44:18 816

原创 01背包问题 -- 经典动态规划题

01背包问题问题描述:有n个重量和价值分别为Wi,Vi的物品,从这些物品中挑选出总重量不超过W的物品,求怎么挑选才能使价值最大;首先可以使用搜索来看看,吧每件物品放入背包试试,找出最优解。// 01背包问题// 问题描述:// 有一个背包可以存放W重量的物品,有n样物品,价值分别为v1,v2,v3,……vn,// 重量分别为w1,w2,w3,……wn,求怎么放才能让价值最

2016-03-16 14:51:46 891

原创 田忌赛马--贪心算法 HDU1052

题目链接:点我田忌赛马的故事大家都应该听过吧。田忌和齐王赛马,有优良差三种马,每一种马齐王都比田忌要好,所以齐王总是赢,田忌输一次就要给齐王200银币,田忌输的很惨于是去找孙膑帮忙。孙膑就让他用最差的马去和齐王最好的马比,然后用优秀的马去赢齐王差的马。题目不过是把三头马变成了1000头马,齐王还是按马的优劣来安排,但是田忌可以自己安排马的出场顺序,求田忌最慢安排才能赢得最多。思

2016-03-16 13:38:02 1913

原创 最长公共子序列LCS 动态规划 HDU1159

题目链接:点我首先了解一下什么叫子序列:一个字符串的子序列,是指从该字符串中去掉任意多个字符后剩下的字符在不改变顺序的情况下组成的新字符串子序列和子串还是不一样的,子串是要连续不断的,而子序列不一定是要连续的。 图示是这样的:附上代码吧#include #include #include #include using namespace st

2016-03-15 21:22:39 394

原创 动态规划入门杭电1231

题目链接:点我题目:给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子

2016-03-15 18:49:28 320

原创 字典序最小问题--贪心入门

// greedy 贪心算法// 贪心算法是求当前最优解// 题目:输入一个整数,然后在输入N长度的字符串,每次从字符串开头或者末尾取一个字母,// 组成新的字符串,组成字符串的字典序最小// 例:输入:6// ACDBCB// 输出: ABCBCD#include using namespace std;int main(){

2016-03-14 23:18:03 1165

原创 ACM基础 BFS入门

注释写的很详细哦// 深度搜索利用队列走迷宫,求最短步数// 题目大意: 有一个N*M的迷宫,地图上S代表起点,G代表终点,#代表墙无法通过,.代表路// 求从起点到终点的最短距离,如果无法找到出口则输出not find。// 例如:// input:// 3 2// S#G// ...// output// 4// dfs隐式的利用了栈的特点,多次递归与栈一样后入

2016-03-14 18:40:46 2236

原创 HDOJ1241

题目链接:点我题目的大意是问有多少个连通块如果@的上下左右和对角线相邻的也是@,这两块就是相邻的,也就是说它们是连通块#include #include using namespace std;const int MAX_N = 105;char pic[MAX_N][MAX_N]; // 模拟地图int visit[MAX_N][MAX_N];

2016-03-13 21:29:46 371

原创 杭电1045 fire net dfs入门

题意是有n*n大小的地图,地图上点(.)代表空地,X代表防火墙,在地图上放置碉堡,碉堡可以横向或者竖向扫射,所以同一行或列上只能有一个碉堡,但是防火墙可以阻拦攻击,求最大能放置多少碉堡// HDOJ1042 fire net// 思维是主要靠深搜#include <iostream>using namespace std;int visit[5][5]; // visit数组是用来存放状

2016-03-13 20:16:37 413

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除