
C++
文章平均质量分 57
monkeyduck
清华大学CS在读,研究领域为语音处理、模式识别、对话管理,依然在不断学习中,成功在于点滴积累!
展开
-
c++中的各种输入操作符 cin,cin.get(),cin.getline()等函数用法总结
#include using namespace std; main () { char ch; ch=cin.get(); //或者cin.get(ch); cout using namespace std; main () { char a[20]; cin.get(a,20); cout<<a<<endl; } 输入:jkl jkl jkl 输出:jkl jkl jkl 输入:abcd原创 2013-08-27 15:27:19 · 4015 阅读 · 0 评论 -
uva10905同一思路的两种做法,前一种WA,后一种AC
这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用int型存,后来觉着不行,改用long,结果还是WA,这是第一个程序。第二个程序是改用string处理,确实比int方便很多,在运算符重载那里体现就非常明显。这个题目用到了之前总结过的结构体加入优先级队列需要重载运算符,之所以写成结构体是因为我不知道直接将string加入优先级队列时怎么写比较函数。。。⊙﹏⊙b通原创 2013-11-14 19:29:43 · 1084 阅读 · 0 评论 -
uva 10282 初学哈希入门题
转载请注明出处,谢谢!http://blog.youkuaiyun.com/monkeyduck题目比较简单,哈希函数也不需要怎么设计,不追求完全没有冲突的话就随便算就可以了,然后加入哈希表和查找表的时候对应好。比较关键的一个地方是word和dic数组的下标不要从0开始哦!#include#includeusing namespace std;const int MAX=10000原创 2013-11-14 13:43:01 · 1526 阅读 · 0 评论 -
uva10763 简单做法
转载请注明出处,谢谢!原文地址:http://blog.youkuaiyun.com/monkeyduck题意开始有点歧义,我以为只要方案可行即输出YES,就是在1 2,2 3,3 1这种方案的情况下应该是可以的。但是跑到网上去试验发现这种方法不行,因为题目要求就是两个学生互换,A.X==B.Y&&B.X==A.Y才可以配对成功。所以想到用结构体,然后用链表存储,配对一对后即删除节点,原创 2013-11-15 09:24:58 · 1183 阅读 · 0 评论 -
uva270 已成功AC!
挺简单一题,编完后过不了,然后一直调,是在不知道哪里有问题,看了网上别人的代码,思路一样的,实现稍微有点不同,然后就开始改,照着别人的改,可是一直过不了,最后改得几乎是一样的了,可还是wa,我就不明白为什么了,到底哪里出错了??我的代码#include#include#includeusing namespace std;struct Node{ float x,y;};原创 2013-11-17 11:33:20 · 1495 阅读 · 0 评论 -
uva705一次AC
这题读完想了一会,没有什么思路,不知道如何处理‘\’和‘/’,因为它们是“墙”,但是这墙是具有方向性的;而且没有路,输入全部由“墙”组成,与以往做过的图找路径的题目有很大的不同,一时没有办法。后来看了网上的思路,觉得非常好。做法就是把原图放大2倍或3倍。放大2倍是指用2*2的0-1矩阵表示‘\’或‘/’具体为‘\’表示成1 0 '/'表示成 0 1原创 2014-01-20 15:04:44 · 1163 阅读 · 0 评论 -
c++string.find()函数用法整理
发现find函数有很多用法,容易混淆,于是整理一下方便以后查看#include #include using namespace std;void main(){ ////find函数返回类型 size_typestring s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");string flag;string::size_type posi原创 2014-04-12 17:10:11 · 59396 阅读 · 0 评论 -
uva301重做,一次ac!
旧题重做,一次AC!原创 2014-05-29 16:12:57 · 1067 阅读 · 0 评论 -
【LeetCode】【C++】Linked list cycle 2
面试经常问的一道算法题!原创 2014-10-14 20:28:47 · 2605 阅读 · 0 评论 -
【LeetCode】WordBreak动规解法
WordBreak题目Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, given s = “leetcode”, dict = [原创 2015-03-18 21:34:44 · 1004 阅读 · 0 评论 -
【LeetCode】【C++】Wildcard Matching
题目‘?’ Matches any single character. ‘*’ Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The function prototype should原创 2015-03-21 11:21:59 · 1681 阅读 · 2 评论 -
C++ fill和fill_n函数用法介绍和比较
fillfill函数的作用是:将一个区间的元素都赋予val值。函数参数:fill(first,last,val);//first为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。例题:给你n个数,然后输入一些操作:start,end,paint。表示从start到end都赋予paint的值,并输出每一次操作后的数组状态。 代码:#include <iostream>#includ原创 2015-03-22 11:24:41 · 23938 阅读 · 1 评论 -
【LeetCode】【C++】Maximal Rectangle
经典动态规划,面试前必看题原创 2015-03-22 12:02:03 · 2135 阅读 · 0 评论 -
【LeetCode】Majority Element两种做法对比
两种做法对比,明显第二种要好过1太多太多!!!原创 2015-03-23 10:11:10 · 8105 阅读 · 0 评论 -
'LeetCode'水题一道:Minimum Depth of Binary Tree
题意Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.思路一般做法是深度优先遍历,分别递归左右子树,求出两边的最小距离,取较小值+原创 2015-04-09 16:19:37 · 1009 阅读 · 0 评论 -
【LeetCode】Path Sum II
题意Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum.思路基本的深搜,注意一点就是必须是根到叶子节点求和,不可在非叶子节点处停。代码/** * Definition for binary tree * struct TreeNode { *原创 2015-04-09 16:53:49 · 1140 阅读 · 0 评论 -
getline和cin.getline
C++中有两个getline函数,这两个函数分别定义在不同的头文件中。1.getline()是定义在中的一个行数,用于输入一行string,以enter结束。函数原型:getline(cin,str); cin:istream类的输入流对象 str:待输入的string对象example 1:#include <iostream> #include <string> using name转载 2015-05-20 15:52:25 · 851 阅读 · 0 评论 -
【LeetCode】triangle求最小和路径
今天闲来无事,做了三道leetcode水题,怒更两发博客,也挺不错。今天更新的两篇都是dp解法的简单题。题目要求如下。Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, giv原创 2015-08-14 18:15:40 · 1658 阅读 · 0 评论 -
【c++】实例演示类继承中派生类到基类的转换及虚函数
刚刚编辑好的内容没保存,现在只好重新码。。。对类继承中牵扯到指针指向类对象的调用以及有虚函数的时候一直既不牢固,于是自己编了一个实例来加深印象。实例很简单,定义一个基类和子类,基类有两个函数talk和eat,其中eat用virtual关键字声明,在子类中重写了talk和eat函数以示区分,为了能分辨出来到底调用了基类还是子类的函数。基类指针指向基类对象和派生类指针指向派生类对象都没有什原创 2013-11-12 18:20:50 · 2496 阅读 · 0 评论 -
uva188 完美哈希题解
找一个最小的整数C使得不冲突,C必须是某个数的倍数且尽可能小,当C不满足题设条件则进行计算去找下一个C一次ac,比较简单的模拟题,其实和哈希没啥太大关系。注意审题,单词和单词的间隔可以不只一个空格。转载请注明出处,谢谢!http://blog.youkuaiyun.com/monkeyduck#include#include#includeusing namespace st原创 2013-11-11 14:16:17 · 1565 阅读 · 0 评论 -
c++中::的用法
::是运算符中等级最高的,它分为三种:1)global scope(全局作用域符),用法(::name)2)class scope(类作用域符),用法(class::name)3)namespace scope(命名空间作用域符),用法(namespace::name)他们都是左关联(left-associativity)他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想转载 2013-08-09 12:42:19 · 3020 阅读 · 2 评论 -
【C++学习笔记】函数重载和函数覆盖
函数重载和函数覆盖一、函数重载函数重载(overload),指相同的函数名,但参数个数或类型不同。所谓“重载”就是一物多用。比如说一个比较大小的函数,比较的数的类型可以是int,double也可以是long型,如果不用重载我们要定义三个如下函数 void compare1(int a,int b);void compare2(double a,double b);void co原创 2013-09-14 13:48:08 · 1046 阅读 · 0 评论 -
【C++学习笔记】友元函数和友元类
最近开始重新看C++的基础知识,还真的有很多新的收获,特此总结一下,供大家学习交流。友元函数和友元类其实是打破C++封装性的一部分内容,所以不要随意乱用。我们都知道,在一个类外是只能访问该类的公有成员,不能访问保护和私有成员,但是友元是一个例外。友元函数:如果在类外有一个函数(可以属于别的类也可以什么类也不属于),在类体内用friend关键字声明后,该函数就成为了本类的友元函数,可以访问本原创 2013-09-14 18:41:43 · 873 阅读 · 0 评论 -
【C++学习笔记】继承与派生基础概念
面向对象的程序设计主要有四个特点:抽象、封装、继承和多态。其中继承是我认为最最重要的一个特性,可以说继承是面向对象的精华所在。举一个继承的浅显易懂的例子:假如我们已经有了一个“马”的类,其中成员变量有身长、身高、体重等,还有“吃”、“奔跑”等成员函数,现在我们想创建新类”公马“和”母马“,很明显公马母马具有所有马的特征,我们就不需要重新再写,只需要在原有类的基础上增加”性别“这一新特征,即可创原创 2013-09-16 13:27:39 · 1931 阅读 · 2 评论 -
【C++继承与派生之二】有子对象的派生类的构造函数
派生类中含有子对象的构造函数改如何书写呢?如果不清楚就赶紧点击吧!!原创 2013-09-16 14:12:19 · 1916 阅读 · 0 评论 -
【C++算法设计】八数码问题
八数码问题【题意】编好为1~8的8个正方形滑块摆成3行3列(一个格子为空),如图所示每次可以移动空格相邻的滑块到空格,要计算出能移动出目标局面的最小步数,如无法达到则输出-1。【分析】我们可以把每一种局面定义为一种“状态”,而每个状态就是由9个格子的编号依次排列组成,如上图左的状态为:1,5,2,4,3,0,7,8,6,同理右的状态为:1,2,3,4,5,6,7原创 2013-09-17 16:06:58 · 4330 阅读 · 0 评论 -
【C++学习笔记】优先级队列以及运算符重载
在编写一道算法题时用到了优先级队列,其中优先级比较函数第一次写错了,输出结果一直不对,感觉这个错误应该大家都很容易犯,总结一下前车之鉴。题目大意是有一个触发器,每个一个周期会产生一个数,触发器是通过输入“Register NUM Period”定义的,输入语句可以包含若干行定义register语句外加整数k,然后按时间先后输出触发器产生的k个整数,若同一时间产生多个整数则先输出数小的。根据原创 2013-09-22 13:09:09 · 1880 阅读 · 0 评论 -
递归调用时的参数写法之引用&
我自己在写一个递归函数时发现了参数传递的一个小细节,就是形参变量前到底要不要加&(在这里不是取地址运算符,只是引用的一个标示符),亲自实践了一下稍微弄明白了一点什么时候必须要加&,什么时候不能加。如下面这样一段程序:原创 2013-08-26 10:57:58 · 6271 阅读 · 0 评论 -
strcmp库函数源码心得
明天要去参加实习面试,复习的时候偶然看到库函数实现,觉着应该会问到,就看了下。发现自己其实对很多常用函数根本不懂其源码实现过程,所以明显错误就一犯再犯。strcpy的源码如下char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *sr原创 2013-10-16 22:29:52 · 1437 阅读 · 0 评论 -
彻底搞定指针的指针!
一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6 7 8 9 10 11 12 13 1转载 2013-10-28 13:45:10 · 771 阅读 · 0 评论 -
uva10132 字符串数组的qsort排序技巧
首先声明uva服务器又崩了,没有提交所以不知道这道题能否AC,思路可以参考一下,不难。因为文件都相同,且恰好分成两部分,所以我先将所有字符串按长度排序,最短串和最长串组成的一定是源文件!如果有多个最短串和最长串,就要排列组合去试了。在编写qsort的比较函数时遇到了问题,百度后解决了,最主要就是*(char**)这里,容易写错,如果只写char*,那是指向字符的指针,char**才是指向指原创 2013-11-16 15:48:29 · 1433 阅读 · 0 评论 -
uva193继续回溯!!
简单的回溯问题,如果是PE的话很可能是最后一个后面还输出了空格加了一个count判断输出了几个数了,等于Max时就是最后一个节点,不要输出空格,输出换行即可。转载请注明出处,谢谢!http://blog.youkuaiyun.com/monkeyduck#include#includeusing namespace std;int m,n,k,Max,vis[105],res原创 2013-11-04 20:11:48 · 964 阅读 · 0 评论 -
uva208 直接暴力会TLE,需要剪枝
不剪枝的话会TLE,因为节点最多有21个,回溯数据量还是很大。剪枝后AC通过时间15ms。。剪枝的方法是统计出哪些节点是有效的,所谓有效是该指节点与目标节点是直接或间接相连的,也就是通过这个节点必然会有一条通路到达目标节点。#include#includeusing namespace std;int des,count,MaxSta,C[25];bool vis[25],原创 2013-11-05 22:32:22 · 1595 阅读 · 0 评论 -
uva10603倒水问题宽度优先遍历!
利用bfs解题,以三个杯子中现有水量作为一个“状态”,从一个状态不断扩展新的状态加入排队数组,这样既可保证找到目标水量时是经过了最少次数的倒水操作。扩展新的状态节点是个稍微难一点的地方,先计算出i给j能倒得水量amount,等于i所剩水与j所差水的最小值。然后当amount!=0时进行倒水操作。vis是判重数组,只需要二维既可,因为三个杯子的水总量是不变的,两个杯子的水量相同时就表明是同一个状原创 2013-11-06 13:34:57 · 2092 阅读 · 0 评论 -
uva10422 bfs+哈希判重 TLE
调了半天,还是TLE,看了网上的代码基本没有用bfs+哈希判重做的,要么是dfs要么压根不用哈希判重,难道说bfs+哈希注定过不了?看了下程序只有算哈希函数的地方有一个25的循环比较累赘,别的地方循环不是很多,可是25位必须要循环才能算哈希函数额。。。求解释。#include#include#includeusing namespace std;const int MAX原创 2013-11-08 19:04:49 · 1102 阅读 · 0 评论 -
uva310 L-system L系统 哈希判重又TLE
这道题经过我反复试验发现,用哈希判重就是TLE,直接用map标记不会超时,感觉是哈希函数设计的不好,如果一位一位去计算确实复杂度有点高,最高可以有15位呢。。题意不太好懂,意思就是从给定的串中(第三行)遇到a就替换成输入第一行的某个非空子集,遇到b替换成输入第二行的某个非空子集,问是否可以生成第四行的字符串。我的做法是参考了别人的代码的,就是遇到a就替换成第一行,遇到b就替换成b,然后判断原创 2013-11-10 09:48:20 · 1228 阅读 · 0 评论 -
uva321 bfs搜索
这道题系统没法提交,所以不知道能否AC,但我感觉程序没啥问题,比较简单,可以跑几个测试用例比对一下。题意容易理解,思路 是将所在的房间号和r个房间的开灯情况作为一个状态,这样最多会有10*2^10种状态,并不多。然后就是bfs宽度遍历了,要注意一点是人在某个房间中不可以把该房间的灯关上,所以我在输入的灯开关数组时候就做了一个判断,如果两个数字相同,也即控制该房间灯的开关就在这个房间时,开关是无原创 2013-11-10 15:48:27 · 962 阅读 · 0 评论 -
[Leetcode]287. Find the Duplicate Number简单解法及解释 双指针复杂度O(n)
题目链接:Find the Duplicate Number Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there原创 2016-01-01 11:34:20 · 14908 阅读 · 8 评论