自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

唐唐唐唐人的博客

随笔小记,与君共分享

  • 博客(252)
  • 资源 (10)
  • 收藏
  • 关注

转载 【《Real-Time Rendering 3rd》 提炼总结】(十) 第十一章 · 非真实感渲染(NPR)相关技术总结

本文由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78574734与传统的追求照片真实感的真实感渲染不同,非真实感渲染(Non-Photorealistic Rendering,NPR)旨在模拟艺术式的绘制风格,常用来对绘画风格和自然媒体(如铅笔、钢笔、墨水、木炭、水彩画等)进

2017-11-20 17:20:00 1095

原创 【《Real-Time Rendering 3rd》 提炼总结】(九) 第十章 · 游戏开发中基于图像的渲染技术总结

本文由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78309500 这是一篇近万字的总结式文章,关于基于图像的渲染(Image-Based Rendering,简称IBR)技术的方方面面,将总结《RTR3》书中第十章提到的16种游戏开发中常用的IBR渲染技术。他们包括:渲染谱 Th

2017-11-20 17:18:24 1451

转载 Unity5.x ShaderLab SubShader Tags介绍

ShaderLab: SubShader TagsSubshaders使用标签来告诉引擎如何以及何时将其渲染。语法:Tags { "TagName1" = "Value1" "TagName2" = "Value2" } 指定TagName1具有Value1的值,TagName2具有Value2的值。标签的数目不受限制。标签基本上是键值对(key-value pairs)。 在SubShader内

2017-11-09 15:35:36 446

转载 Sobel边缘检测算法

转载请注明出处:  http://blog.csdn.net/tianhai110索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量 Sobel卷积因子为: 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差

2017-11-09 11:36:38 1152

转载 【《Real-Time Rendering 3rd》 提炼总结】(八) 第九章 · 全局光照:光线追踪、路径追踪与GI技术进化编年史

本文由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78013184全局光照(Global Illumination,简称 GI), 作为图形学中比较酷的概念之一,是指既考虑场景中来自光源的直接光照,又考虑经过场景中其他物体反射后的间接光照的一种渲染技术。大家常听到的光线追踪,路径追

2017-10-12 17:23:55 843

转载 【《Real-Time Rendering 3rd》 提炼总结】(七) 第七章续 · 延迟渲染(Deferred Rendering)的前生今世

本文由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/77142101题图为基于Deferred Rendering技术的渲染效果图。  在计算机图形学中,延迟渲染( Deferred Rendering) ,即延迟着色(Deferred Shading),是将着色计算延迟到深度测试

2017-10-12 17:21:48 411

原创 动态规划之01背包,完全背包,多重背包模板

自己整理的模板,记录一下:#include <iostream>#include <vector>#include <deque>#include <algorithm>using namespace std;const int M = 500;const int N = 500;#pragma region"01背包问题"// 未优化版int pack01(vector<int>& w

2017-08-24 15:46:27 453

原创 二叉树的下一个节点

题目给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路根据给出的节点的父节点指针一直循环往上找可以找到最终的根节点,然后对根节点进行中序遍历,当遍历到当前元素的下一个就是需要的节点。参考代码/*struct TreeLinkNode { int val; struct TreeLinkNode

2017-08-23 23:26:03 272

原创 删除列表中重复的节点

题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路在链表的头节点前面再插入一个节点(保证节点的值和头结点的值不一样),pre指针初始指向新的头结点,用一个p和next指针来进行遍历,初始p指向原来的头节点,然后每次让next指向p的next指针,比较它们的值是否一样,如果

2017-08-23 23:23:01 546

原创 链表中环的入口节点

题目一个链表中包含环,请找出该链表的环的入口结点。思路使用快慢指针,快指针每次移动两格,慢指针每次移动1格,他们同时从链表的头开始出发,由于链表中有环,那么在环中经过若干次绕圈后快慢指针会相遇,这个时候再用一个指针指向头节点,一个指针指向相遇的节点,两个节点同时向后移动,当他们相遇的时候就是环的入口节点。 用数学式子证明一下为什么这样: 假设链表的头到环的入口的距离为d,环的长度为r,慢指针走的

2017-08-23 23:08:24 353

原创 字符流中第一个不重复的字符

题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。如果当前字符流没有存在出现一次的字符,返回#字符。思路用一个128位数组存储每个字符出现的次数,初始为0,每当插入一个字符时,当前字符的计数加1,然后判断当前的计数,如果等于1的话就压入

2017-08-23 22:50:24 223

原创 表示数值的字符串

题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。思路把字符串分成e(E)左和右来,右边只能是整数(第一位可以带符号,并且带符号时右边字符串的长度要大于1),左边按照正常的数值判断来,即第一位可以带符

2017-08-23 22:46:36 215

原创 正则表达式匹配

题目请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配思路首先,题目有个坑,根据牛客网提交测试的结果来看,‘.’符号应该不能匹配空字符。 假设str为要匹

2017-08-23 22:41:46 259

原创 构建乘积数组

题目给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。思路使用交叉相乘的方法,把B[i]分成两部分,即第一遍先乘A[0]A[1]…A[i-1],即B[i] = B[i - 1] A[i - 1] ,当i = 0时B[i] = 1;然后乘以后面的A[i+1]…*A[n-1]

2017-08-23 22:14:38 209

原创 数组中重复的数字

题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路遍历整个数组,对于每个元素,把下标为这个元素的位置上的元素加上数组的长度,表明这个位置的元素已经出现过,这样,当对某个下标进行叠

2017-08-23 22:00:43 221

原创 把字符串转换成整数

题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入:输入一个字符串,包括数字字母符号,可以为空 输出:如果是合法的数值表达则返回该数字,否则返回0思路主要是注意正负号,如果可能有正负号,只能在第一位(并且此时字符串的长度不能为1)。参考代码class Solution{public: int StrToInt(s

2017-08-23 21:57:05 280

原创 不用加减乘除做加法

题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路使用位运算来模拟二进制的加法,在不考虑进位的情况下,每一位的相加的结果可以用异或来表示,进位可以用与来表示,然后把进位的结果左移一位再相加,一直到进位为0为止。参考代码class Solution{public: int Add(int num1, int num2) { int

2017-08-23 21:24:14 218

原创 求1+2+3+...+n

题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路使用递归,由于递归需要终止条件,可以使用传入的参数是不是0来判断。参考代码class Solution{public: int Sum_Solution(int n) { int res = n; res

2017-08-22 21:55:08 283

原创 孩子们的游戏(圆圈中最后剩下的数)

题目每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这样下去….直到剩下最后一个小

2017-08-22 21:52:02 241

原创 扑克牌顺子

题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张

2017-08-22 21:36:39 205

原创 反转单词顺序列

题目牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路从尾到头扫描字符串,在没有遇到

2017-08-21 21:03:07 231

原创 左旋转字符串

题目汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路根据要循环左移的位数,分别逆置一遍前部分,逆置一遍后部分,再把整个数组逆置一遍即可。参考代码class

2017-08-20 17:14:09 164

原创 和为S的两个数字

题目输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出:对应每个测试案例,输出两个数,小的先输出。思路设置头尾指针,每次把两个指针指向的元素相加,如果和为sum则输出这两个元素,如果小于sum则把头指针右移,如果大于sum则把尾指针左移。由于是要求乘积最小的,所以这两个元素差的越远则越小,即第一次找到的符合要求的两

2017-08-20 17:11:41 169

原创 和为S的连续正数序列

题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出要求:输出所有和为S的连续正数序列。序列内按照

2017-08-20 16:59:08 215

原创 数组中只出现一次的数字

题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路先考虑如果只有一个只出现一次的数字的情况,这个很简单,只需要把所有的数字异或一遍,所有出现了两次的数字都会异或抵消掉,剩下的就是这个单独的数字了。 考虑有两个只出现一次的数字,把所有的数字都异或一遍,这样得到的结果是这两个只出现了一次的数字异或的结果,现在只需要把这两个数字分开到两组元素里面区分开来

2017-08-20 16:43:45 196

原创 平衡二叉树

题目输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路递归判断左子树有和又子树的高度,绝对值不超过1.参考代码class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if (!pRoot) return true; return IsBalanced_Solution(pRoot

2017-08-20 16:29:54 171

原创 二叉树的深度

题目输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路前序遍历二叉树,记录一下深度。参考代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :

2017-08-20 16:24:07 145

原创 数字在排序数组中出现的次数

题目统计一个数字在排序数组中出现的次数。思路利用lower_bound和upper_bound找出下界和上界,然后减一下即可。 也可以自己模拟lower_bound和upper_bound。参考代码class Solution {public: int GetNumberOfK(vector<int> data, int k) { int length = data.si

2017-08-20 16:13:49 151

原创 两个链表的第一个公共节点

题目输入两个链表,找出它们的第一个公共结点。思路分别扫描2个链表,并记录两个链表的长度,如果两个链表有公共节点,那么他们的尾节点一定是一样的。在确定会有公共节点后,根据两个链表的长度差,把长的链表先进行移动,一直到两个链表剩下来的长度相等,在这之后两个链表同时往后扫描,一直第一个公共节点。参考代码/*struct ListNode { int val; struct ListNod

2017-08-20 16:07:42 240

原创 数组中的逆序对

题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路每一次把当前要统计的范围分成前半部和后半部分,递归统计前半部分和后半部分各自里面的逆序对数目,剩下的就是统计前半部分和后半部分之间的逆序对数目了,这个时候利用归并排序的思想,对于前半部分和后半

2017-08-20 15:54:13 250

原创 第一次只出现一次的字符

题目在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置思路由于字符串的长度在10000以内,可以直接穷举。参考代码class Solution {public: int FirstNotRepeatingChar(string str) { int cnt[52] = { 0 }; int len =

2017-08-20 15:33:36 190

原创 丑数

题目把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路对于任意的第n个丑数,它必定是前面的丑数中的某一个乘2或者乘3或者乘5得到的。根据这一点,开一个res数组,大小为N,用t2, t3, t5表示当前求第i个丑数的时候,前面最大的乘以2、乘以3、乘以5就会超出的丑数的

2017-08-19 18:10:43 389

原创 把数组排成最小的数

题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路把整数转换成字符串,然后对字符串数组进行排序,排序比较的规则是比较两个字符串不同叠加方式下的字典序,最后再合并起来参考代码class Solution{public: static bool cmp(con

2017-08-19 18:02:56 173

原创 整数中1出现的次数(从1到n整数中1出现的次数)

题目求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。思路直接统计从1到n中每个数的1的个数即可。参考代码class Solution{public: int

2017-08-19 18:00:01 293

原创 连续子数组的最大和

题目HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1

2017-08-19 17:55:39 182

原创 最小的K个数

题目输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路扫描数组,并使用multiset来存储扫描的元素(从大到小存储),如果multiset的长度达到k的话,就用新的元素和multiset的第一个元素比较,如果新元素小,则替换进去,否则丢弃。参考代码class Solution{public: vector<in

2017-08-19 17:47:14 176

原创 数组中出现次数超过一半的数字

题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路用num记录当前扫描的元素,cnt记录它出现的次数,初始为1,如果扫描到的元素和num相等,则cnt+1,否则cnt - 1,如果当前cnt == 0则把num更新成新的元素,并把cn

2017-08-19 17:43:27 137

原创 字符串的排列

题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba,注意可能有字符重复。思路对当前字符串进行全排列,注意跳过字符重复的情况。参考代码class Solution {public: vector<string> Permutation(string str) {

2017-08-19 17:39:38 163

原创 二叉搜索树与双向链表

题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路中序非递归遍历二叉搜索树,每次记录当前遍历出来的节点的pre节点,把上个节点的right指针指向它,当前节点的left指针指向上一个节点,然后把当前节点更新成pre节点,因为二叉搜索树进行中序遍历是排序的,所以最后形成的链表就是排序的,注意先处理一下第一个节点。参考代码/*st

2017-08-19 17:36:33 174

原创 复杂链表的复制

题目输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路遍历整个链表,把每个节点都复制一份放在原节点的下一个位置,即让原节点的next指针指向复制的节点,random指针不变,让复制节点的next指针指向原节点的下一个节点,这样就等于是

2017-08-19 17:30:54 199

Real-Time Rendering, Third Edition实时渲染第三部

大名鼎鼎的Real-Time Rendering,第三部英文原版,带目录超级清晰,学习渲染必备

2017-06-18

C++经典书籍合集

C++经典书籍大合集,包含:Effective C++, More Effective C++, Effective Modern C++, Effective STL, Exceptional C++, More Exceptional C++, C++并发编程实战

2017-06-17

effctive c# 第二版中文版

effctive c# 第二版中文版,带目录,清晰

2017-06-17

Lua 5.3 手册

lua5.3手册,云风翻译

2017-06-17

计算机程序设计艺术(第3卷):排序与查找(第2版)-国防工业出版社-2002

经典的TAOCP第三部,带目录超级清晰版

2017-06-17

计算机程序设计艺术(第1卷):基本算法(第3版)-国防工业出版社-2002

经典的TAOCP第一部,带目录超级清晰版

2017-06-17

图论算法理论、实现及应用

图论方面的算法介绍,覆盖面很广,讲的很好,ACM可以参考

2017-02-04

背包九讲2.0

著名的背包九讲2.0版本

2017-02-04

Algorithms 算法 原书第四版 英文版

《算法》第四版的英文原版,带有章节目录,非常清晰,喜欢看原版的朋友不要错过

2017-02-04

空空如也

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

TA关注的人

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