自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ByaAym

千日行千里

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

原创 剑指Offer

看了看《剑指Offer》这本书,发现里面说的很多东西确实很有道理,记一些比较经典的题目。包括之前的旋转数组、位运算都出自这本书。总结了以下规律: 1.写函数的时候要考虑:常规输入、边界输入、违法输入。 2.有些细节能注意就注意。比如尽量用指针传递复杂类型的参数,因为值传递,从形参到实参会产生一次复制操作。再如C#中不要多次用String的+运行来拼接字符串,因为这样会产生很多临时String,最

2017-03-24 06:30:16 1040

原创 C++随记

1.c/c++的内存分配方式 代码区:在一个exe中,正文段(Text Segment)储存指令 全局数据区:数据段(Data Segment)储存已初始化的全局变量和静态变量,BSS段(BSS Segment)储存未赋值的全局变量所需的空间。把比较大的数组定义在main函数外。 在程序运行时: 堆区:动态内存。程序运行时用malloc或new申请任意多少的内存,需要用户free或delet

2017-02-19 18:31:06 471

原创 C++之STL

C++自带的STL确实是强,像vector,queue,stack这些东西都很实用,熟练使用这些东西能省很多事,之后肯定会整理一些关于STL的文章。先记一个C++STL的next_permutation,求排列的函数。 http://www.cnblogs.com/xudong-bupt/p/3662986.html

2017-04-15 18:06:24 252

原创

Graph.h#pragma once#include<iostream>#include<string>#include<queue>#include<stack>using namespace std;#define MAXN 100 //最大顶点数#define PERRROR perror("Allocate dynamic memory");typedef struct

2017-03-24 00:21:18 376

原创 (五)图

G=(V,E)由顶点(vertex)集合V和边(edge)集合E组成。 边有两个顶点构成,还有可能有权,路径是一个顶点序列w1,w2,…wn,路径的长是路径上的边数,等于n-1。 包括有向图和无向图,有向无圈图简称DAG(Directed Acyclic Graph) 。 如果一个无向图中从每一个顶点到每个其他顶点都存在一条路径,称该无向图是连通的。 具有这样性质的有向图称强连通图,如果一个

2017-03-23 21:30:30 483

原创 位运算

在程序员圈子里有一个流传了很久的笑话,说世界上有10种人,一种人知道二进制,而另一种人不知道二进制。。二进制的位运算总共5种:与、或、异或、左移和右移。左移表示把某个数左移n位,左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0。(一般情况下相当于x2,但是如果数字本身已经足够大而且是有符号整数时,继续左移会覆盖符号位,就会出现正数变成负数的情况)右移表示把某个数右移n位,最右边的n位被丢

2017-03-23 04:25:37 209

原创 旋转数组(二分查找)

把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 如数组{3,4,5,1,2}是{1,2,3,4,5}的一个旋转,该数组最小值为1。分析: 1.直接从头到尾遍历,O(N)。 2.旋转之后其实划分成2个排序的子数组,而且前面的子数组都大于或者等于后面子数组的元素。而且最小的元素就是分界线,可以用二分查找。 两个指针分别

2017-03-23 02:39:08 698

原创 链表实现

LinkList.h#pragma once #include<iostream>typedef struct Node{ int data; Node* next;}*NPoint;class LinkList{private: NPoint head; // 头指针public: LinkList(); ~LinkList(); bool

2017-03-22 22:18:52 183

原创 排序比较

写了几个排序算法的比较,然后发现手写的快排比std的sort要快?这尼玛肯定是不合理的,但是我至今不知道神马原因。。#include<iostream>#include<ctime>#include<cmath>#include<algorithm>using namespace std;#define Cutoff 10const int MAXN = 10408;int o[MAXN

2017-03-21 02:39:26 236

原创 (四)排序

排序稳定性:有两个等值元素,在排序前后相对前后位置关系不变。 1.插入排序(InsertionSort) 由N-1趟排序组成,对于P=1到P=N-1,插入排序保证从0到P上的元素为已排序状态。 最坏时间复杂度为O(N^2),如果数组已经有序,则运行时间为O(N)。插入排序是稳定的。2.希尔排序(ShellSort) 先取一个正整数d1小于N,把所有序号相隔d1的数组元素放一组,组内进行直接插

2017-03-21 02:36:04 202

转载 Unity全面优化

Unity全面优化Unity的项目优化已经是老生常谈,很多人在项目完成之后,即便创意新颖,也会觉得差强人意,原因就在于没有做详细的项目优化。众所周知,Unity是一个综合性的3D开发引擎,其中包含图像渲染,逻辑处理,数据存储,发布测试等等各方面的内容。因此Unity各个方面都存在的待优化的内容,也可以说项目优化是项目开发中必不可少的一项工作。本篇文章会从项目的各个方面分析Unity待优化的内容,并

2017-03-19 00:03:31 238

转载 NGUI的渲染管理

NGUI 渲染原理链接:https://zhuanlan.zhihu.com/p/23063061NGUI内部架构NGUI的核心架构,其实就在于3块:UIPanel、UIWidget、UIDrawcall。其中Panel和Widget是会显示在Hierarchy层级中的,而Drawcall则不会。所以我们先来说前面2个。Widget是NGUI中负责界面显示的基础单位。所有需要在屏幕上显

2017-03-18 23:26:55 328

原创 关于面向对象

关于构造函数与析构函数: 如果父亲有默认构造,则儿子不需要在子构造函数调用父亲构造,否则需要。 顺序:父构造函数—子构造函数—子析构函数—父析构函数重载:一个类中同名函数有不同参数 隐藏:子与父亲中的同名成员,父成员会被隐藏 (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 (2)如果派生类的函数与基类的函

2017-03-11 03:28:08 205

原创 优先队列(C++实现)

优先队列(堆)满足先进先出,而且每次出队的都是队列中最小的(也可以是最大的,看实现过程)。 堆是一棵完全二叉树,所以优先队列一般用二叉堆实现。 C++有自带的PriorityQueue,但是C#没有。所以写一下分析: 1.一棵完全二叉树,所以可以用一个数组表示而不需要用指针。但是用数组就要事先估计堆的大小,所以用一个Capacity表示最大值。 2.因为保持堆序性质,最小元就是在根上,删除后

2017-03-03 02:39:00 8920

原创 日常逗逼对话

说实话,在瑞典求学实在确实很TM容易得抑郁症,你不能跟家里人吐槽也不能跟国内的朋友说,因为首先当初是自己义无反顾的排除万难想出国啊,其次我之前也是很羡慕那些出国留学的人啊,他们说有多无聊有多寂寞我都是抱着呵呵的态度的。为什么会写博客,单纯是无处可吐了但是又很想吐,反正没人知道。前几天在家就有个传教士敲我家门给我发了个宣传单,上门写着“帮助青少年走出抑郁症的阴影”,而且是什么,是用中文写的!意思是中国

2017-03-01 17:41:14 516

原创 (三)树

一.相关概念 树:由根节点root和0个或多个非空子树组成。(N个节点和N-1条边) 节点相关术语:父亲、孩子、路径的长(两节点之间的边数)、节点深度(节点到根节点的路径的长,根depth为0)、节点度(节点连接的边数) 树相关术语:树的层数(=树的深度)有很多种树:二叉树、B-树、霍夫曼树。 其中二叉树应用比较多,主要是熟悉二叉树。 B-树的话用在数据库系统里面的磁盘存储。 霍夫曼树主

2017-02-28 22:45:21 293

原创 二叉树2(二叉查找树的插入、查找、删除、遍历)

单纯想用类把它给封装起来 BinarySearchTree.h#include<iostream>#include<cstdio>#include<cstdlib>#include<queue>using namespace std;const int MAX = 1000000000;typedef struct BSTNode{ int data; //数据 i

2017-02-28 22:34:09 267

原创 二叉树1(数组存储)

一棵满二叉树,深度D。节点从上到下、从左到右编号为1,2,3,..2^D-1。 在节点1处放一个小球,它会往下落,每个内节点上都有一个开关,初始全部关闭。 当每次有小球落到一个开关上,它会改变状态。 当小球到达一个内节点,开关关闭往左走,打开往右走,直到叶子节点。输入深度D和小球个数I,输出第I个小球最后所在的叶子编号。 I不超过叶子总数,D<21。输入包含1000组数据。样例输入: 4

2017-02-28 17:19:48 992

原创 (二)链表、栈和队列

1.抽象数据类型(ADT) 抽象数据类型(abstract data type,ADT)是一些操作的集合,模块化设计。如表、集合、图和它们的操作一起可以看作是抽象属性类型。2.表 包括数组实现与单链表,由于数组(连续存储)在插入和删除最坏情况是O(N),所以引入链表。 单链表:表头结点和普通结点,表头只是指向第一个元素的指针,普通结点包含表元素和该元素后继元的结构的指针(Nex

2017-02-26 23:23:18 293

原创 栈问题2(四则运算)

利用栈实现形如 a+b*c+(d*e+f)*g 的运算 先从中缀式转为后缀式 然后再计算 可输入空格#include<iostream>#include<stack>#include<cstdio>using namespace std;//a+b*c+(d*e+f)*g //1+1*1+(2*1+1)*2 = 8//3 + 5 * 1 + ( 2 * 0 + 1 ) * 1 = 9

2017-02-26 23:04:44 338

原创 队列问题1

有一叠牌,从上往下依次编号1~n,当至少还有两张牌时:把第一张牌扔掉,然后把新的第一张叠到最后。输入n,输出每次扔掉的牌以及最后剩下的牌。样例输入:7 样例输出:1 3 5 7 4 2 6使用数组实现时,要注意数组足够大,防止越界。#include<stdio.h>#include<stdlib.h>const int maxn=500;int main(){ int n,queue[

2017-02-26 20:51:40 559

原创 栈问题1

如图,n节车厢从A方向入站,进站顺序编号1~n,判断能否按照特定顺序从B出站。C是中转站,后入先出。数组实现:#include<stdio.h>#include<stdlib.h>#define maxn 5000int n,target[maxn],c[maxn];int main(){ //freopen("stack.in","r",stdin); while(scanf("

2017-02-26 20:45:26 205

原创 链表问题1

有一些小球,从左到右依次编号1,2,3….n,执行两种指令。A X Y 表示把小球X移动到Y左边,B X Y 表示把小球X移动到Y的右边,保证指令合法,即X不等于Y。分析: 1.用数组做也可以,但是如果反复执行B 1 n和A 1 2,则每次都移动几乎所有元素。 2.用链表做,强调相对顺序而非绝对顺序,可以用left[i]和right[i]分别表示左边和右边的小球编号(如果是0,表示不存在)。即使

2017-02-26 20:35:12 230

原创 (一)算法分析

对于一个问题,给定某种算法并且确定其是正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题。 1. 如何估计一个程序所需要的时间 2. 如何降低一个程序的运行时间 3. 递归的每一层迭代都应该比上一层消耗少 4. 将一个数自乘得到其幂以及计算两个数的最大公因数的有效算法一. 数学基础 假定两个函数T(N)=1000N,f(N)=N*N,在N较小时,1000N

2017-02-26 18:53:47 352

原创 土地问题(求出土地被分成多少面,有知识点)

有一块椭圆的土地,你可以在边界上选n个点,并两两连接得到n(n-1)/2条线段。他们最多能把土地分成多少个部分。分析: 1.最优方案不会让任何3条线段交于一点。 2.欧拉公式:V-E+F=2。其中,V是顶点数(即所有线段的端点+交点数),E是边数(即n段椭圆弧+这些线段被切成的段数),F是面数(即土地块数+椭圆外那个无穷大的面)。所以,只要求出V和E,F=E-V+1(减去无穷大的面)。 3.计

2017-02-22 07:26:07 423

原创 果园里的树(判断点是否在三角形内)

果园里的树排列成矩阵。它们的x和y的坐标都是1~99的整数。输入若干个三角形,依次统计每个三角形内部和边界上共有多少棵树。分析: 1.对于每个点,判断是否在三角形内。假设三角形ABC,判断点O,则O在三角形ABC的内部或者边界上当且仅当Sabc=Soab+Sobc+Soca。 2.判断两个浮点数a和b是否相等时,尽量判断fabs(a-b)是否小于一个事先给定的eps,如1e-9。 3.可以用海

2017-02-22 07:14:23 306

原创 大整数运算(支持正负数、加减乘除)

#include<iostream>#include<cstdio>#include<string>#include<algorithm>using namespace std;const int maxn = 3000; //大整数位数struct BigNumber{ int len, s[maxn]; // 从0开始存个位 bool posi

2017-02-22 05:22:09 940

原创 字符数组3

题目1:将字符串中的双引号换成单引号#include<stdio.h>int main(){ int c, q = 1; while ((c = getchar()) != EOF) { if (c == '"') { printf("%s", q ? "'" : "'"); q = !q;

2017-02-21 21:12:44 204

转载 Unity3d + NGUI 的多分辨率适配

一、当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS设备的分辨率主要有:宽  高 宽高比 960 640 1.5 1136 640 1.775 1024 768 1.3333 2048 1536 1.3333Android设备的分辨率则相对纷杂,主流的分辨率有: 宽 高 宽高比 800 480 1.6667 854 480 1.7

2017-02-20 06:03:02 278

原创 字符数组2

输入一个字符串,求出其中最长的回文字串。 忽略所有标点符号和空格,忽略大小写,输出保持原样。 输入字符串长度不超过5000,占据单独一行。 输出最长的回文串,如果有多个,输出起始位置最靠左的。分析: 1.首先不能用scanf,因为它碰到空格或者TAB就会停止。 用fgets(buf,MAXN,stdin),它会读取不超过MAXN-1个字符,然后在末尾添上’\0’,读到’\n’就停止。如果一

2017-02-19 20:32:28 411

原创 字符数组1

找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式(乘法过程)中,所有数字属于一个特定的数字集合。 输入数字集合(相邻数字之间没有空格),输出所有竖式。 每个竖式前都有编号,最后输出解的总数。分析: 1.尝试所有的abc*de,判断是否满足条件。 2.应该充分里面string里面自带函数 strlen:返回字符串实际长度(’\0’结束) strchr(const cha

2017-02-19 19:32:58 217

原创 Prime

#include<iostream>#include<fstream>#include<assert.h>//#define LOCALusing namespace std;//ifstream fin("input.txt");//ofstream fout("output.txt");bool is_prime(int x){ int i, m; assert(x

2017-02-19 17:39:43 476

原创 随记一些Unity问答

1、Mesh,Sphere,Box,Capsule,四种碰撞器。请按照性能开销由小到大进行排序。 collider的性能和效率大概的顺序是:Sphere Collider > Capsule Collider> Box Collider > Mesh Collide。2、向量的点积,叉积,在游戏中的应用。 判断目标在自己的前后方位可以使用下面的方法:Vector3.Dot(transform.f

2017-02-19 06:17:13 717 1

原创 uva11520 填充正方形

在一个n x n的网格中填了一些大写字母,要求把剩下的格子也填上大写字母,使得任意两个相邻格子的字母不同。 如果有多个解,按要求从上到下、从左到右的顺序把所有格子连接起来的字典序最小。分析: 1.“从上到下、从左到右”其实就是把每行看成一个字符串,然后从上到下连接,得到一个长长的字符串。所以我们只需要从左到右、从上到下依次给空格填上最小可能的字母即可。 2.这里直接暴力就可以。#include

2017-02-15 04:42:20 256

原创 LA 3971 组装电脑

给你b块钱去组装一台电脑。 给出n个配件各自的种类、品质因子和价格,要求每个类型配件各买一个,总价格不超过b,且“品质最差配件”的品质因子尽量大。(即最小的品质因子尽量大)分析: 1.解决“最小值最大”的问题常用方法是二分答案。 假设答案是x,如何判断x是最小还是最大呢?删除品质因子小于x的所有配件,如果可以组装出一台不超过b元的电脑,那么ans>=x,否则ans < x。 2.判断是否可以

2017-02-14 00:53:53 391 1

原创 关于十维空间

最近看了一个讲十维空间的文章,然后觉得很有意思,但是讲我觉得我是讲不清楚的,这种东西得看到一个东西然后想象然后思考然后再想象再思考。 然后用Unity3d做了一个关于这个的exe方便想象和思考。 百度云盘地址:http://pan.baidu.com/s/1b1BGZG "零维:让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的,作为标志一个位置的点。它

2017-02-02 22:43:41 569

转载 计算机图形学的一些算法

记一个计算机图形学的一些算法的地址 有时间的时候看 http://blog.csdn.net/orbit/article/details/7082678

2017-01-31 06:59:45 709

原创 uva 10795 新汉诺塔问题

题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1736有n个大小不一样的盘子和3个柱子。给定一个初始局面,求到给定目标局面至少需要多少步。 移动规则:一次只能移一个盘子,在移动一个盘子之前,必须把压在上面的其他盘子先移走,编号大的盘子不得压在编

2017-01-31 06:55:47 444

原创 uva 11210 麻将

给你一副麻将,输出这副麻将听什么牌。 T=筒 S=索 W=万分析: 1.一共只有34种牌,所以可以loop判断是否听这些牌。这样问题就转化为,给你14张牌,判断这副牌能不能胡。 2.递归:首选一个对子,然后每次选3张作为刻子(3个相同)或者顺子。#include<iostream>#include<cstdio>#include<cstring>using namespace std;c

2017-01-31 06:25:19 266

原创 uva 10881 蚂蚁

长度为L的木棍上有n只蚂蚁,蚂蚁要么向左爬要么向右,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁初始位置和朝向,计算T秒之后每只蚂蚁的位置。分析: 1.蚂蚁碰撞调头其实就是两个点”对穿“,如果蚂蚁看成一样的小点,那么只需独立计算每只蚂蚁在T秒后位置即可。如3只蚂蚁,(1,R),(3,L), (4,L),那么2秒后 (3,R),(1,L),(2,L)。 2.但

2017-01-24 06:51:30 490

空空如也

空空如也

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

TA关注的人

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