C/C++
文章平均质量分 89
C/C++
ACM
数据结构
算法之美
Gabriel.Tian
高级BSP工程师
熟悉Linux FreeRTOS嵌入式操作系统,具有高通 MTK 紫光展锐等多款平台开发经验
展开
-
数据结构:C语言实现二叉树及相关操作(递归,迭代)
#include <stdlib.h>#include <stdio.h>#include <unistd.h>typedef struct node{ int item; struct node *left; struct node *right;}node;node *stack[512];int top = 0;...原创 2019-04-20 20:36:06 · 380 阅读 · 0 评论 -
数据结构:红黑树(Red Black Tree)
概念红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它可以在O(log n)时间内(它的查找最坏时间复杂度为O(2lgn))做查找,插入和删除,这里的n 是树中元素的数目。性质节点是红色或黑色。根节点是黑色...原创 2019-07-29 15:28:31 · 513 阅读 · 0 评论 -
数据结构:C语言 走迷宫---栈/队列实现
走矩阵迷宫,0代表可以走,1代表障碍物栈实现:#include <stdio.h>#define MAX_ROW 5#define MAX_COL 5struct point{ int row; int col;};struct point stack[512];int top = 0;void push(struct point p){...原创 2019-04-21 14:40:42 · 2877 阅读 · 0 评论 -
2023年华为笔试面试机考真题100道(C/C++语言)
华为面试 机考 C语言原创 2022-07-07 21:56:09 · 36363 阅读 · 18 评论 -
数据结构:约瑟夫环
约瑟夫环原理运作如下:N个人围在一起坐成环状从K编号开始报数数到某个数M的时候,此人出列,下一个人重新报数一直循环,直到所有人出列,约瑟夫环结束joselooplink.c(编译环境: Ubuntu18.04 ,Vim)#include <stdio.h>#include <stdlib.h>typedef struct node ...原创 2019-07-27 22:56:35 · 10010 阅读 · 0 评论 -
数据结构:双向链表
doublyinkedlist.h#ifndef DOUBLYLINKEDLIST_H#define DOUBLYLINKEDLIST_Htypedef struct node *link;struct node{ unsigned char item; link prev, next;};link make_node(unsigned char item);void fr...原创 2019-04-20 17:07:15 · 186 阅读 · 0 评论 -
数据结构:回调函数
摘自百度百科:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应源码:main.c#include <stdio.h>#include "callback.h"vo...原创 2019-04-20 19:25:01 · 354 阅读 · 0 评论 -
数据结构:单链表(编译环境:Ubuntu18.04 Vim)
先说明一下相关概念:单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。结点结构:┌───┬───┐│data │next │└───┴───┘data域–存放结点值的数据域next域...原创 2019-07-28 14:55:00 · 291 阅读 · 0 评论 -
ZOJ Problem Set - 1027
原理:LCS#include <iostream>#include<cstring>using namespace std;int ctoi(char a){ int b; if(a=='A') b=0; if(a=='C') b=1; if(a=='G') b=2; if(a=='T') b=3; if(a==...原创 2020-04-10 00:02:44 · 147 阅读 · 0 评论 -
ZOJ Problem Set - 3870
原理:异或#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MaxN = 1e5 + 10;int a[MaxN], bit[50]; // bit[i]表示有多少个数的最高位的1在第i位上void solve(int x) ...原创 2020-04-10 00:04:18 · 159 阅读 · 0 评论 -
ZOJ Problem Set - 1002
Fire NetTime Limit: 2 Seconds Memory Limit: 65536 KBSuppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a st...原创 2019-04-20 16:54:44 · 197 阅读 · 0 评论 -
ZOJ Problem Set - 1004
原理:DFS#include<iostream>#include<string>#include<stack>using namespace std;string a,b;//用来存每组字符串的第一个和第二个int sum;//用来存每组需要的操作数目(等于第一组字符串长度的二倍)//深度优先搜索函数,六个参数分别为,//第一个字符串(初始字符...原创 2020-04-10 00:01:41 · 135 阅读 · 0 评论 -
ZOJ Problem Set - 1015
原理:弦图判断/*弦:连接环中不相邻的两个点的边弦图:一个无向图称为弦图,当图中任意长度大于3的环都至少有一个弦算法:先对图进行重新编号,然后根据新的编号检查*/#include <cstdio>#include <cstring>using namespace std;int n, m;bool g[1024][1024], used[1024];...原创 2020-04-10 00:00:25 · 102 阅读 · 0 评论 -
KMP算法
KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为T),如果它在一个主串(接下来称为S)中出现,就返回它的具体位置,否则返回-1(常用手段)。假如是在串“SSSSSSSSSSSSSA”中查找“SSSSB”,设置两个指针i,j,比较到最后一个才知道不匹配,然后其中的i回溯,这个的效率是显然是最低的。...原创 2019-04-21 17:37:06 · 137 阅读 · 0 评论 -
算法之美:斐波那契数列(Fibonacci sequence)
斐波那契数列 分治法 动态规划法原创 2019-04-20 20:52:42 · 448 阅读 · 0 评论 -
算法之美:回溯法解决八皇后问题
八皇后问题原理:在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后,因此,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2。而且仅当 n2 ≥ 1 或 n1 ≥ 4 时问题有解queen.c(编译环境:Ubuntu18.04 Vim) #include <stdio...原创 2019-07-27 23:06:50 · 196 阅读 · 0 评论 -
算法之美:0-1背包问题(动态规划法,回溯法,贪心法)
1.动态规划法:求解决策过程的最优化#include <stdio.h>#define CAPACITY 10 //背包的容量#define N 5 //n为物品的个数int max(int a, int b){ return a > b ? a :...原创 2019-04-21 17:18:19 · 1671 阅读 · 0 评论 -
算法之美:汉诺塔(Hanoi)问题
设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步:(1)以C盘为辅助,从A杆将1至n-1号盘移至B杆;(2)将A杆中剩下的第n号盘移至C杆;(3)以A杆为辅助;从B杆将1至n-1号盘移至C杆。我们采用递归的方法解决该问题:(编译环境:Ubuntu18.04 Vim)#include <stdio.h>void hano(int n, int src,...原创 2019-07-28 15:05:00 · 300 阅读 · 0 评论 -
C++智能指针详解(共享指针,唯一指针,自动指针)
C++智能指针(共享指针,唯一指针,自动指针) 已完结原创 2021-10-22 20:10:55 · 7124 阅读 · 0 评论 -
基于VS2019多线程上传下载器
编译环境:Win10 VS2019Server端:server.cpp// server.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include <stdio.h>#include "stdafx.h"#include "network.h" //UDP 网络编程int _tmain(int argc, char* argv[]){...原创 2020-04-27 21:47:59 · 507 阅读 · 3 评论 -
VS2019:基于UDP协议的回声服务器
编译环境:Windows ,VS2019UDP_Server.cpp#include <stdio.h>#include <winsock2.h>#pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll#pragma warning(disable : 4996)#define BUF_SIZE 100int...原创 2020-01-29 22:53:36 · 853 阅读 · 0 评论 -
高性能服务器(C10K) ---- Linux集群监控系统(Epoll)
编译环境:Ubuntu 18.04,Qt5.11.2有关技术:epoll机制,线程池,Reactor模式服务器:C10K_server.proTEMPLATE = appCONFIG += console c++11CONFIG -= app_bundleCONFIG -= qtLIBS += -lpthreadSOURCES += \ main.cpp \ ...原创 2019-12-13 14:48:54 · 472 阅读 · 0 评论 -
2020校招笔/面试复盘:C++软件开发/后台开发岗
bilibili Wind UCloud 美团 快手 白山云科技 域起网络 ......and so on.原创 2019-11-29 21:01:25 · 1220 阅读 · 0 评论 -
Linux C++:基于select机制的多人网络聊天室 —— 服务器及客户端
从C语言版本迭代过来的,增加了界面,包装类对象;服务器代码没有改变。存在少许bug,未来得及修正,在注册时可能出现崩溃,源码持续更新…编译环境:ubuntu18.04 Qt5.11.2客户端代码:ChatClient.proTEMPLATE = appCONFIG += consoleCONFIG -= app_bundleCONFIG += qtCONFIG += c++11...原创 2019-09-17 08:29:53 · 465 阅读 · 0 评论 -
C++ 工资发放系统(附UML图)
编译环境:win10(64bit),VS2017UML:main.cpp#include <iostream>using namespace std;#include "employee.h"#include "salariedemployee.h"#include "commissionemployee.h"#include "basepluscommission...原创 2019-04-21 16:16:45 · 2251 阅读 · 2 评论 -
C++ 菱形继承
C++支持多重继承,也就是菱形继承,它是指两个子类继承了同一个父类,而又有子类同时继承了这两个子类。#include <iostream>using namespace std;class A{public: A(){cout << "A" << endl;} ~A(){cout << "~A" << endl...原创 2019-04-21 15:57:01 · 174 阅读 · 0 评论