自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梵高先生的专栏

学海无涯乐作舟!

  • 博客(96)
  • 资源 (1)

原创 5 计数排序

计数排序Profile计数排序,顾名思义通过计数的方式来排序。计数排序不同于快速排序、归并排序,并不进行元素间的比较,因此可以突破时间复杂度O(nlgn)的下限,其时间复杂度为O(n)。基本思想是:确定小于等于元素的其他元素的个数,就确定了此元素的次序。前提要求元素属于[0, k]之间的数字。当然计数排序还有最最重要的一个性质:她是一个稳定的排序算法,即具有相同值得元素在输出数组中的相...

2018-02-25 11:48:23 119

原创 4 快速排序

快速排序Profile和归并排序一样,快速排序也使用分治思想。 -分解:将序列分成左右两部分; -解决:分别对左右部分进行排序; -合并:和归并排序不一样,子数组就在原地,所以不用合并,原数组就已经有序了。 快速排序的应用可就广泛了,C++STL中的sort()方法主体就是采用的三数取中快速排序,并搭配插入排序和堆排序以解决递归深度问题,和提升整体排序效率。快速排序的期望时间复杂度...

2018-02-25 10:01:14 140

原创 3 堆排序

堆排序Profile堆排序结合了插入排序(原地排序)和归并排序(时间复杂度)的优点。堆排序基于一种数据结构——堆。这里说的堆不是指JAVA虚拟机中存储对象的内存空间。堆分为最大堆、最小堆,不仅可以用来实现堆排序,更常见的是实现优先级队列,比如JAVA JDK中的PriorityQueue类就是以堆为数据结构基础实现的。这里暂且不写优先级队列的实现,实现成优先级队列,当然最好是写成一个类...

2018-02-24 18:10:10 81

原创 2 归并排序

归并排序Profile说到归并排序,就不得不说道分治法。将原问题分解为几个规模较小但类似原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来得到原问题的解。总结一下就是以下步骤:分解、解决、合并。对于归并排序来说(这个总结来自《算法导论》): - 分解:分解待排序的n个元素为两个子序列; - 解决:使用归并排序递归地排序两个子序列; - 合并:合并两个已排序的子序列产...

2018-02-24 11:50:50 105

原创 1 插入排序

插入排序说明本来是想对插入排序做一个详细的说明——从算法原理、算法优劣、算法实现一一说起。但是要将算法原理说的通俗易懂,不是个简单的事情,常常需要很好的文笔和配上详细的图。但是最近需要复习准备面试,确实没什么时间去写一系列完整地说明算法的博客,所以这次就只是写下算法实现(C++代码)的细节和详细注释,找到新工作有空余时间后之后会陆续对这一系列算法进行详细说明。这一系列的算法博客不再赘叙...

2018-02-24 10:35:14 85

原创 C++中的函数默认参数

C++中的函数默认参数C++提供的函数默认参数,不是什么很新的东西,只是很大程度上便利了函数的使用,减少程序员的负担。在申明函数原型的时候,可以给形参赋值,当调用函数时,不填写实参函数会自动选择默认值执行。但还是有一些值得注意的地方,让我们看代码举例说明:代码块#include <iostream>using namespace std;void a(int n, i...

2018-02-14 16:00:22 341

原创 C++中的有趣的数组名

C++中的有趣的数组名最近学习STL源代码,但是感觉有些C++的语法和细节忘却了,所以复习一下C++(毕竟一年未写过C++代码了,变节投入了JAVA的阵营>-<)。

2018-02-13 16:36:17 258

原创 JDK源码剖析之ArrayList浅析

ArrayList概述        下文用昵称“小A”表示ArrayList的一个实例:)        ArrayList是一个实现了List接口的大小可变的数组,可类比于Vector,但是ArrayList是unsynchronized(非同步的),而Vector类是synchronized(同步的)。获取ArrayList信息的一些方法比如size()、isEmpty()、get(

2017-12-26 22:10:03 142

原创 前言

知其然知其所以然,接触和使用JAVA也有8、9个月了,也算是对java、java的JDK有了一定了解,而我比较喜欢弄清楚一个东西的原理,所以陆陆续续对工作中常用的JDK中提供类、方法等的源码进行了一番探究。最后决定做个总结,做一个梳理,所以以JDK提供的源码为线索,对其做一番粗浅的剖析,即一般不会涉及到其底层到底是如何实现的一些细节(比如native方法到底是如何执行的),大多是对

2017-12-26 22:05:35 97

原创 HDOJ 2734 Quicksum

根据字母代表的值和其输入的位置计算。细心一些,这是一道水题。#include const int MAX_SIZE = 255 + 2;char array[MAX_SIZE];//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif const char A = '

2017-12-21 22:35:09 114

原创 HDOJ 2629 Identity Card

水题,细心一些。#include #define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n; scanf("%d", &n); getchar(); char idCard[25], year[5], month[3

2017-12-21 22:33:29 277

原创 HDOJ 2023 求平均成绩

简单题目,不过要细心一点。#include #include int score[50][5];double courseAverage[5];//#define YANGYUANint main(){#ifdef YANGYUAN freopen("in.txt", "r", stdin);#endif // YANGYUAN int n, m; w

2017-12-21 22:31:21 319

原创 HDOJ 2017 字符串统计

统计出现的数字字符,遍历统计就好。#include const int MAX_SIZE = 10000;char words[MAX_SIZE];//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n; scanf

2017-12-21 22:26:05 103

原创 HDOJ 2016 数据的交换输出

题目要求找到输入数字中最小的那个,并和第一个元素交换然后输出所有数据。遍历找到最小的那个元素和第一个元素进行交换就好。

2017-12-21 22:23:58 79

原创 完全使用Linux学习和工作

大学时前看过王垠写的那篇《完全用Linux工作》,当时没什么感觉,只是觉得王垠太过偏激了。没想到在我完全删除Windows两个月之后,现在我却在Linux的发行版Ubuntu上用Vim写下了《完全使用Linux学习和工作》。

2017-12-21 22:19:40 1068

原创 HDOJ 2015 偶数求和

有一个从2开始的偶数递增序列。求出从2开始每m个元素的平均数,不足m个的,按实际数量求平均数。#include //#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n, m; while (scanf("%d%d", &n,

2017-12-20 20:51:10 101

原创 HDOJ 2014 青年歌手大奖赛_评委会打分

根据题意求平均值,不过要去掉一个最高分和一个最低分。#include //#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n; while (scanf("%d", &n) != EOF) { int min

2017-12-20 20:48:52 96

原创 HDOJ 2013 蟠桃记

根据题意,递推求解就好。#include //#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n; while (scanf("%d", &n) != EOF) { int total = 1;

2017-12-20 20:47:25 78

原创 HDOJ 1197 Specialized Four-Digit Numbers 特别的四位数

根据题目描述,对输入的一个四位数,判断其十进制各位之和a、十六进制各位之和b、十二进制各位之和c是否满足a==b&&a==c。简单的通过求余的方式,求得对应进制各位上的和就好。#include inline int sum(int x, int radix){ int sum = 0; do { sum += x % radix; } while

2017-12-20 20:43:32 119

原创 HDOJ 1064 Financial Management 抢劫

很简单,求输入的浮点数的平均数,注意输出的精度。#include //#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif double sum = 0, buf; for (int i = 0; i < 12; i++) { scanf("%lf", &buf);

2017-12-20 20:39:23 98

原创 HDOJ 1170 Balloon Comes!

简单题,读取运算符和两个数字进行相应的计算。#include char opr[2];//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif int n, a, b; scanf("%d", &n); while (n--) { scanf("%

2017-12-20 20:37:03 86

原创 HDOJ 2081 手机短号

简单题,获取输入字符串的子串并拼接。#include const int MAX_SIZE = 11 + 2;char str[MAX_SIZE];//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n; scanf("%

2017-12-20 20:35:08 210

原创 HDOJ 2029 Palindromes _easy version 判断是否是回文

注意,题目中并没有给出输入数据中,每一行的字符的数量限制。如果是C++就用string来存,如果是JAVA就用String来存(不推荐用C,实在要用的话就把字符数组开大一些)。#include #include const int MAX_SIZE = 1000;char str[MAX_SIZE];//#define yangyuanint main(){#ifdef y

2017-12-20 20:31:26 74

原创 HDOJ 2027 统计元音

统计输入的字符串中元音字母出现的次数,分别统计记数就好。#include #include const int MAX_SIZE = 100 + 2;char str[MAX_SIZE];//#define yangyuanint main(){#ifdef yangyuan freopen("in.txt", "r", stdin);#endif // yangyua

2017-12-20 20:29:23 109

原创 HDOJ 2026 首字母变大写

将输入的单词首字母变成大写并输出。#include #include const int MAX_SIZE = 100 + 2;char words[MAX_SIZE];//#define YANGYUANint main(){#ifdef YANGYUAN freopen("in.txt", "r", stdin);#endif // YANGYUAN

2017-12-20 20:27:50 123

原创 HDOJ 2025 查找最大元素 查找最大字母

这个题目有一点没有说清楚——题目中给的描述是最大字母,有歧义小写字母z和大写字母Z都算不算最大的呢?如果是按ASCII码表的值,当然是小写字母z最大。这里需要注意一下,题目中的大小依据的是ASCII表。#include #include /** * 这个题不够严谨:没有明确给出怎么比较大写字母和小写字母的大小 * 同一个字母的大小写形式按常理理解是一样的还是按照ASCII码值来比较大小

2017-12-19 21:45:06 222

原创 HDOJ 2024 C语言合法标识符

判断输入的字符串是否是一个合法的C语言标识符。简单的字符串处理,不过你要记得字符串满足什么样的条件才算是合法的C语言标识符——        1只能由字母、数字、下划线组成;        2数字不能是首字符(比如3he就不合法)        剩下的就是字符串处理的细节,要细心一点。#include #include /** * 合法的标识符由下划线、字母、数字(数字不

2017-12-19 21:39:25 126

原创 HDOJ 2020 绝对值排序

简单的排序题目,只是要注意是对数的绝对值进行排序。我这采用的是插入排序+随机化快速排序进行排序(只使用随机化快排的话,函数递归的深度有点吓人,为了减小递归的深度,在对少量元素进行排序的时候采用插入排序)。直接使用C/C++标准库提供的排序方法其实还比较麻烦。其实像这样不是很繁琐的基础算法,最好是自己重新写,也算是加深印象吧。#include #include #include vo

2017-12-19 21:27:28 115

原创 HDOJ 2071 Max Num

找寻实数中最大的那个,注意输出格式。#include #include #include using namespace std;//#define yangyuanint main(){#ifdef yangyuan ifstream in("in.txt"); cin.rdbuf(in.rdbuf());#endif // yangyuan cout.setf(

2017-12-19 21:25:34 83

原创 HDOJ 2022 海选女主角

遍历所有MM,记录绝对值分数最高的即可。#include //#define YANGYUANint main(){#ifdef YANGYUAN freopen("in.txt", "r", stdin);#endif // YANGYUAN int m, n; while (scanf("%d%d", &m, &n) != EOF) {

2017-12-19 21:23:16 93

原创 HDOJ 2090 算菜价

不要被题目描述的输入所迷惑,虽然有中文字符,但是这和求解并没有关系,所以不用考虑字符编码的问题直接从标准输入读出然后舍弃就好。然后就是注意题目要求的输出精度。#include #include #include #include using namespace std;//#define yangyuanint main(){#ifdef yangyuan ifstre

2017-12-19 21:16:00 106

原创 HDOJ 2075 A|B? 整除问题

#include #include using namespace std;//#define yangyuanint main(){#ifdef yangyuan ifstream in("in.txt"); cin.rdbuf(in.rdbuf());#endif // yangyuan int n; cin >> n; while (n--) {

2017-12-19 21:12:23 64

原创 HDOJ 2070 Fibbonacci Number

#include #include using namespace std;//#define yangyuanint main(){#ifdef yangyuan ifstream in("in.txt"); cin.rdbuf(in.rdbuf());#endif // yangyuan int n; while (cin >> n) { if (-1

2017-12-19 21:07:05 77

原创 HDOJ 2055 An easy problem

题目中给出了一个多项式,根据这个多项式求解,只是注意字母映射的数字大小,正好和ASCII成对应关系,所以只需减去'A'或'a'就能轻松得到其他字母映射的值。#include #include char str[2];//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif /

2017-12-19 21:02:57 62

原创 HDOJ 2042 不容易系列之二

很简单的题目,递推求解之。#include //#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int n, a; scanf("%d", &n); while (n--) { scanf("%d", &a); in

2017-12-19 20:59:17 77

原创 HDOJ 2040 亲和数

#include #include int sum(int);// 求真约数的和//#define yangyuanint main(){#ifdef yangyuan freopen("in", "r", stdin);#endif // yangyuan int m, a, b; scanf("%d", &m); while (m--) {

2017-12-18 21:07:05 79

原创 HDOJ 2033 人见人爱A+B

直接模拟计算。注意秒、时是60进制就好。#include #include using namespace std;//#define yangyuanint main(){#ifdef yangyuan ifstream in("in.txt"); cin.rdbuf(in.rdbuf());#endif // yangyuan int n, ho

2017-12-18 21:03:39 65

原创 HDOJ 2032 杨辉三角

明确计算的公式——a[i][j] = a[i - 1][j - 1] + a[i - 1][j - 1]。但是要注意边界的时候不能直接使用公式计算,因为会越界。还有就是注意输出的格式。#include int data[30][30];#define yangyuanint main(){#ifdef yangyuan freopen("in.txt", "r", stdin);

2017-12-18 21:00:42 85

原创 HDOJ 2031 进制转换

进制转换,10进制转换成16进制。循环求余,余的逆序就是我们要的结果,当然不能直接输出,还必须输出对应的字符(10-->A, 11-->B等)。#include #include #include using namespace std;const int MAX_SIZE = 32 + 2;char BASE[] = {'0', '1', '2', '3', '4', '5'

2017-12-18 20:56:57 74

原创 HDOJ 2005 第几天?

这个题目没什么难的,关键是要记得怎么判断是不是闰年。        1.年份能被4整除但是不能被100整除或        2.者年份能被400整除。#include #include using namespace std;// 平年每月的天数int data[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//#d

2017-12-18 20:49:59 107

C++中const的用法

C++const用法详解。这里可以学到C++const的一些用法。

2013-12-04

空空如也

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