
C/C++
文章平均质量分 68
DrCrypto
这个作者很懒,什么都没留下…
展开
-
二叉树的构建--BST
很久没有写树的构建程式了,题目中用到,发现手非常生,写出来总是有bug,单步运行才排除错误。 本篇博文就是一次回顾。这次树的存储方式选用的是链接存储方式。 结点结构定义依旧是:typedef struct Node{ int data; Node *left; Node *right;}TNode;很多书上的代码都省略了typedef,但是我省略以后测试不通过,具体细原创 2016-09-09 20:44:08 · 1443 阅读 · 0 评论 -
关于STL模板的使用效率与控制输出时最后不加空格问题
关于STL模板的使用效率与控制输出时最后不加空格问题题目:PAT 1009 149ms vs 7ms的写法的细微区别This time, you are supposed to find A*B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each cas原创 2017-02-10 16:24:47 · 831 阅读 · 0 评论 -
如何从一行输入的字符串中基于空格切割出单词
在C++中,可以考虑用已经写好的模板来解题:#include <iostream>#include <string>#include <sstream>#include <vector>using namespace std; int main() { string line,word; vector<string> s1; getline(cin,line); /原创 2017-03-01 02:46:42 · 2209 阅读 · 0 评论 -
递归判断两棵树是否相同
递归写法判断两棵树是否相同:bool flag = true; // 默认认为两棵树是相同的,递归判断过程中改变flag值,一旦有一个不同,就跳出void judge(node* root1, node* root2){ if(root1 == root2) return; // 这个相等其实是用来判断都为空的,那么不用改变flag if((root1 == NULL && ro原创 2017-03-01 13:24:33 · 6631 阅读 · 0 评论 -
优先队列的优先级设置法
优先队列也是用 #include<queue> 这个头文件,且不必引入vector的头文件基础类型优先级设置默认定义: + priority_queue<int> 大顶堆手工设置:priority_queue<int, vector<int>, less<int>> 大顶堆:表示其他都比堆顶小priority_queue<int, vector<int>, greater<int>> 小顶堆:原创 2017-03-02 02:12:09 · 9529 阅读 · 0 评论 -
Dijkstra+DFS模板总结
关于Dijstra的初级运用是,在第一标尺的基础上有下面三个角度:边权:c[maxn] = {maxn}, cost[manx][maxn] = {inf};点权:w[maxn] = {0}, weight[maxn] = {0};最短路径条数:num[maxn] = {0};a1003.cpp 用到了其中的两个,作为模板来刻意练习,练习如何将问题结构化,模板化。再额外补充边权的代码,不是这原创 2017-03-02 23:35:33 · 1330 阅读 · 0 评论 -
异或运算交换两个数
a = a^b;b = a^b;a = a^b; 这样就可以不借助第三个变量实现两个数的交换。基于如下几个性质:任意变量x与自身异或结果为0,即:x^x = 0任意变量x与0进行异或运算,结果不变,即:x^0 = x异或运算的结合性:a^b^c = (a^b)^c = a^(b^c)异或运算的交换性:a^b = b^a再来解释上面的交换为什么可行:a = a^b b = a^b --原创 2017-03-07 22:54:38 · 7433 阅读 · 0 评论 -
优先队列之Leetcode 23合并K个有序链表
优先队列要点复习这在之前专门写过一篇文章讲优先队列的使用方法:优先队列的优先级设置法对于优先队列,我们首先需要知道,它的底层是堆,或者说优先队列是堆的一种别称。堆自然就分成了两个方向:大顶堆小顶堆堆的结构维护着一种数据关系,我们通过q.top()可以取出顶部的数据,要么最大,要么最小,通过q.pop()可以弹出这个顶部,然后剩下的数据会自动维护同样的属性。关于堆,之前也写过另...原创 2019-02-19 16:39:33 · 1305 阅读 · 0 评论 -
C++基础之返回数组
C++基础之返回数组核心在于以下几个要点://声明int* arr;//定义arr = new int[3];//函数返回return arr;参考:http://www.cnblogs.com/gisbeginner/archive/2012/10/30/2746313.html原创 2017-02-10 01:04:33 · 383 阅读 · 0 评论 -
PAT1006题解
PAT1006题解At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the records of signing in’s and ou原创 2017-01-18 20:50:02 · 668 阅读 · 0 评论 -
一点点指针的理解
int *a, b, c;//看起来像是声明了三个指针,实际上只有a被声明为int *int *a, *b, *c;//才是正确的声明三个指针的方式,因此让*跟在变量后面看起来会更合理。Q : 这里会问,int本身是值类型,用int就可以表示一个整数,那么int *a这种仅仅是把一个单整数放在堆空间罢了? A :不是的。看完下面这个例子,再一起总结。 char *message = "Hel原创 2016-08-30 20:10:29 · 582 阅读 · 0 评论 -
数组作为函数参数传递
重点:在C中,数组是不能作为参数进行传递的,但是可以通过传递指向数组初始元素的指针,使得在函数内部操作数组成为可能。在函数这一侧,可以通过array[i]引用数组的内容。Why?本质上array[i] 不过是*(array + i)的语法糖。#include<stdio.h>void func(int *array, int size){int i;for(i = 0; i < size;原创 2016-08-30 20:26:22 · 606 阅读 · 0 评论 -
C复杂声明练习
atexit( )函数:程序正常结束时,回调一个函数int atexit(void (*func) (void));并非简单的从左往右读。atexit is function(fund is pointer to function(void) returning void ) returning int;即:atexit是一个返回int的函数(参数是:指向返回void没有参数的函数的指针)再练习一个原创 2016-08-30 20:28:24 · 475 阅读 · 0 评论 -
Leetcode 58 之反向迭代器的使用
题目: Given a string s consists of upper/lower-case alphabets and empty space characters' ', return the length of last word in the string. If the last word does not exist, return 0. For examp原创 2016-09-14 01:55:05 · 604 阅读 · 0 评论 -
图的存储结构再总结
图的邻接矩阵存储在Prim算法这部分有提及。http://blog.youkuaiyun.com/u011240016/article/details/52414818//使用邻接矩阵存储#include<stdio.h>#include<stdlib.h>#define MAX_VERTEX_NUM 20#define INF 10000 // 表示顶点之间不可达#define FALSE 0#d原创 2016-09-02 22:54:46 · 1094 阅读 · 0 评论 -
递归函数的再理解
学习到递归函数的写法时,总是很难深刻理解到背后的设计思想。只知道问题被分解到了,还有一个出口,外加调用自身,最后就能神奇的实现功能。 后来,知道函数调用是一种栈式结构,每一次调用会把当前状态压栈,然后继续往前走,直到调用的函数有结果了,再返回去。 看似理解了背后的逻辑,但是,对于递归的掌握还是仅仅局限于斐波那契数列,阶乘等这些小问题的解决上,再难一点就难以理解,更谈不上随意使用了。我想根子还是出原创 2016-09-05 16:08:16 · 896 阅读 · 1 评论 -
STL模板之vector与sort的使用
STL模板之vector与sort的使用@(算法学习)题目描述 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩.都按先录入排列在前的规则处理。 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter原创 2016-12-09 15:38:41 · 3044 阅读 · 0 评论 -
关联容器基础(一)
对比顺序容器关联容器是按照关键字来保存和访问的顺序容器是按照元素在容器中的位置来顺序保存和访问的关联容器优势关联容器支持高效的关键字查找和访问两大类主要关联容器mapsetmapmap的元素是key-value对:key用作索引的作用,value是与索引相关联的数据。setset中的一个元素只包含一个关键字。两个场景文本处理过程中,可以用set保存要忽略的单词。字典,用关键词作为原创 2017-01-15 01:05:52 · 453 阅读 · 0 评论 -
数组的二路归并排序
归并算法的核心二路归并算法的核心是将两个有序向量(数组)通过“双指针法”合并起来。而归并排序针对的是整体无序的数组,因此我们需要用递归算法,递归基是单个元素时,肯定是有序的,相邻的两个单个元素的数组合并到一起,形成更大一点的有序向量。递的过程是:从原数组拆分到只剩下单个元素;归的过程:两两合并。归并算法代码#include &lt;stdio.h&gt;int a[4] = {2,...原创 2019-02-24 14:52:43 · 1277 阅读 · 1 评论