- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 【C++标准】之 C++11——auto特性
C++ 1C++98/03 : 修饰自动存储期的变量C++11 : 自动推导类型(并不意味着变量类型不确定 or 在运行时确定而是指变量类型在编译时可由编译器推导出来)
2015-12-24 20:03:09 446
原创 C++ 文件操作(不断更新ing)
因最近测试算法,算法主要是C++下的,但是希望使用matlab绘图。 因此考虑到将一些调试数据写入本地,让matlab读取数据绘图。 主要使用以下类:读取文件: istream写入文件: ostream
2015-12-14 13:51:22 654
原创 PAT乙级——1012 D进制的A+B (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述输入两个非负10进制整数A和B(30-1),输出A+B的D (1 输入描述:输入在一行中依次给出3个整数A、B和D。输出描述:输出A+B的D进制数。输入例子:123 456 8输出例子:1103 进制转换的问题一般采
2015-12-11 20:55:33 690
原创 PAT乙级——1011 个位数统计 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0ik-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入描述:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输
2015-12-11 20:43:37 1027
原创 PAT乙级——1010 月饼 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)题目描述月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存
2015-12-11 00:13:01 409
原创 PAT乙级——1009 数字黑洞 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766
2015-12-11 00:09:32 1200 1
原创 PAT乙级——1008 锤子剪刀布 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)题目描述大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入描述:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时
2015-12-11 00:05:39 623
原创 PAT乙级——1007 A除以B (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入描述:输入在1行中依次给出A和B,中间以1空格分隔。输出描述:在1行中依次输出Q和R,中间以1空格分隔。输入例子:12345678905
2015-12-10 20:35:45 652
原创 PAT乙级——1006 部分A+B (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入描述:输入在一行中依次给出A、DA、B、DB,中间以空格
2015-12-10 20:33:29 558
原创 PAT乙级——1005 德才论 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入描述:输入第1行给出3个正
2015-12-10 20:30:41 693
原创 PAT乙级——1004 福尔摩斯的约会 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很 快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写
2015-12-10 20:27:11 518
原创 PAT乙级——1003 数素数 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述令Pi表示第i个素数。现任给两个正整数M 输入描述:输入在一行中给出M和N,其间以空格分隔。输出描述:输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入例子:5 27输出例子:11 13 17 19 23
2015-12-10 20:24:28 770
原创 PAT乙级——1002 数字分类 (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位
2015-12-10 20:18:59 1096 3
原创 PAT乙级——1001 A+B和C (C/C++)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。输入描述:输入第1行给出正整数T(输出描述:对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从
2015-12-10 20:13:19 578
原创 Visual Studio系列 卸载visual assist插件和vmware debugger插件的方法
一、Visual Studio系列 卸载visual assist插件 对于vs 08版 卸载visual 插件之后 打开VS就看不到visual assist插件了。 对于vs 10及以后的版本 卸载之后 重启VS后 仍然会提示visual assist输入KEY 这时候 点击"否" 然后在菜单栏找到 "工具
2015-12-10 13:49:05 2487
原创 链表指定值清除(C++)
题目: 有一个单链表。链表中每个节点保存一个整数,给定一个值val,把所有等于val的节点删掉。 给定一个单链表的头结点head,同时给定一个值val,返回清除后的链表的头结点,保证链表中有不等于该值的其它值。 同时保证其他元素的相对顺序。 如:
2015-12-09 22:41:26 1369
原创 链表的分化问题(C++)
题目:对于一个链表,需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面, 同时保证两类结点内部的位置关系不变。 给定一个链表的头结点head,同时给定阈值val,请返回一个链表,使小于等于它的结点在前,大于等于它的在后,保证结点值不重复。如:输入:{1, 4, 2, 5}, 3输出:{1, 2, 4, 5}思路
2015-12-09 21:58:56 409
原创 51nod 数塔取数问题 —— 动态规划
1002 数塔取数问题基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。 5 8 4 3 6 97 2
2015-12-09 20:26:55 2153
原创 腾讯2016研发工程师笔试题(三)
一、基础1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.二、数据库相关1.2.三、网络1.2.3.
2015-12-09 15:41:36 736
原创 static 修饰全局变量、局部变量和函数的区别
一、全局变量与static全局变量首先要清楚全局变量本身就是静态存储,加上static肯定也是静态存储。两者的主要区别在于作用域。普通的全局变量其作用域为整个源程序,各个源文件之间都可以访问到这个普通全局变量。静态的全局变量其作用域仅为定义该变量的源文件,其他源文件访问不到这个静态全局变量吗,更加安全。另外,static全局变量只能初始化一次。二、局部变量与
2015-12-08 20:42:46 1641
原创 求字符串的最长无重复字符子串(C++)
题目: 给定一个字符串str,返回str的最长无重复字符子串的长度。 如:"abcd" 返回4 "abcb" 返回3 要求:若字符串的长度为N 算法的时间复杂度为O(N)。思路: 下面给出的算法 时间复杂度为O(N) 空间复杂度为O(M) 其中 :
2015-12-06 22:20:37 6875 1
原创 旋转字符串的判断——KMP实现 (C++)
题目: 给定2个字符串srt1和str2,实现一个算法判断其是否互为旋转字符串。 注: 比如字符串"ABCDE" 那么"BCDEA" "CDEAB" "DEABC" "EABCD"都是其旋转字符串。思路: 这里我们判断str2是否是str1的旋转字符串。
2015-12-06 19:37:15 646
原创 centos下编译glib Library并安装
环境说明: Linux版本 : CentOS Linux release 7.1.1503 (Core) glib版本 : glib-2.47.3A. 关于glib glib库是Linux平台下最常用的C语言函数库,是一个底层库,具有很好的可移植性和实用性。 g
2015-12-05 22:37:43 5864
转载 (转)windows进程间通信(IPC)的方式
Windows进程间通信(IPC)的方式主要有以下一些:1. 文件映射(Memory-Mapped Files)2. 共享内存(Shared Memory) 3. 匿名管道(Anonymous Pipe) 4. 命名管道(Named Pipe) 5. 邮件槽(Mailslots) 6. 剪贴板(Clipped
2015-12-05 15:26:08 1661
原创 二叉树的序列化和反序列化实现(C++)
题目:实现二叉树的序列化和反序列化的函数。思路: 二叉树的序列化 即给定二叉树的头指针,按照某种遍历方式将所有结点链接为一个数组或字符串(/指针)。 反序列化即根据给定的序列重新恢复一颗二叉树。 A. 这里给出的序列化按照二叉树的先序遍历方式将所有结点链接为字符串。 遇到空结点追加'#'
2015-12-05 14:39:49 3689 1
原创 复杂链表的复制(C++)
题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点(可以为NULL) )。要求实现一个算法返回一个链表,结构与输入的链表一致(完全的一份拷贝)。注: 链表结点结构如下: struct RandomListNode { i
2015-12-04 21:15:46 3384
转载 不使用比较运算符求两个数的最大值or最小值【位运算】
原题目:来自2012微软校园实习生笔试题 第10题(10) Assume both x and y are integers, which one of the followings returns the minimum of the two integers?(A) y ^ ((x ^ y) & ~(x (B) y ^(x ^ y)(C) x ^ (x ^ y)(D)
2015-12-04 18:19:25 3408
原创 删除排序链表中重复的结点(C++)
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,最后返回链表头指针。如:链表1->2->3->3->4->4->5 输出为 1->2->5思路:
2015-12-03 15:59:21 871
原创 判断数组中是否有重复的数字(C++)
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。思路:这个题目解法很多,这里给出一种解法,充分利用了题目的已知信息。【每个数的范围是 0 - n-1 可能存在多个重复的数字】贴代码:bool duplicate(int numb
2015-12-02 21:55:18 9165
原创 不用加减乘除做加法(C++)
题目:设计算法实现两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:位运算 循环实现。代码如下:#include using namespace std;int Add(int num1, int num2){ int andRes; while(num2 != 0) { andRes = num1 & num2
2015-12-02 21:05:33 1276
原创 一行代码求解1-n的累加和(&实现)
题目:求1+2+3+...+n,不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:这类题目一般都需要用到逻辑位运算实现。给出的解法是基于递归实现的,复杂度O(n)。贴代码:int Sum_Solution(int n) { // 递归实现 n && (n += S
2015-12-02 20:51:17 4017 2
原创 翻转单词顺序列(C++)
题目:给定一个输入字符串,其中各个单词之间由空格分开,每个单词的字符是顺序的,但是单词之间的顺序是逆序的。实现一个翻转单词序列的算法。如: 输入:student. a am I 输出:I am a student.思路:从左往右遍历字符串,逐个拼接每个单词即可。 贴代码:#include #inc
2015-12-02 20:30:00 3967
原创 整数中X出现的次数(C++)
题目:对于给定的n,求出1-n范围内X出现的次数。(0 思路:这道题nlogn的算法很容易想到。遍历1-n的每个数,判断每个数的每一位是否为1,计数即可。下面直接给出代码:#include using namespace std;int NumberOf1Between1AndN(int n, int x){ int cnt = 0; for(int
2015-12-02 20:21:55 1939
转载 vector容器的三种遍历方法
STL(Standard Template Library)中vector容器是最常见的容器之一,设计中经常需要遍历vector容器,本文介绍三种常用的vector遍历方式。一、下标索引遍历 vector容器底层其实是动态数组的包装,因此在其内部重载了[]运算符。函数原型如下:因此可以采用访问数组元素的类似方式访问vector内部的元素。示例代
2015-12-02 10:53:30 64843
转载 c/c++ 数字转字符串, 字符串转数字
一、数字转字符串(速度慢)使用C++的streanstream// 头文件#include #include string num2str(int i){ stringstream ss; ss<<i; return ss.str();}二、数字转字符串(速度快)使用C 库函数 sprintf()【将数字输出到字符缓冲区进行转换】#include str
2015-12-02 10:29:46 1407
原创 数组中只出现一次的数(2)(C++)
题目:一个整型数组里除了2个数字之外,其他的数字都出现了两次。请写程序找出这2个只出现一次的数字。思路:和前一篇文章类似。利用位运算的 "异或" 实现。2个相同的数异或=0 但是这样遍历完数组所有元素之后,得到的是两个只出现一次的数异或的结果。要想分别得到这两个数,还需要进一步思考。按照上一篇文章的思路,我们需要分别将这两个数放在2个不同的子数组,每个数都按
2015-12-01 18:07:18 345
原创 数组中只出现一次的数(1)(C++)
题目:一个整型数组里除了1个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。思路:强调数字出现的次数,而且是偶数次。这时候可以考虑利用位运算的 "异或" 实现。2个相同的数异或=0 因此,将数组所有元素异或得到的结果即为只出现一次的那个数。贴代码:#include #include using namespace std;/
2015-12-01 16:49:32 1064
原创 数组中出现次数超过一半的数字(C++)
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。如果不存在则输出0。如 数组{1,2,3,2,2,2,5,4,2}。数字2在数组中出现了5次,超过数组长度的一半,最终输出2。思路:目前只找到O(n)的解法。初始认为数组第一个数就是目标数(target)。之后遍历数组后面的元素,如果等于目标数,计数++; 否则计数--;如果发现目标数的计数
2015-12-01 15:37:30 2292
原创 从上往下打印二叉树BFS(C++)
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:很明显,这是一个BFS遍历问题。使用一个辅助队列即可。和很多二叉树问题一样,使用递归和非递归的方式实现。【注:递归方式将二叉树所有元素压入队列 非递归方式队列中只有一层的结点】贴代码:#include #include #include using namespace std;typ
2015-12-01 14:53:10 1323
原创 判断给定序列是否是对应入栈序列的出栈序列(C++)
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。(假设压入栈的所有数字均不相等)如 序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2不可能是该压栈序列的弹出序列。思路:使用一个辅助栈,依次将压栈序列的元素入栈,同时判断出栈序列的元素与栈顶元素是否相等。全部压栈
2015-12-01 13:45:40 2356
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人