首页
学习
活动
专区
工具
TVP
发布

C/C++

专栏作者
23
文章
8436
阅读量
15
订阅数
C++智能指针详解(共享指针,唯一指针,自动指针)
几个共享指针可以指向同一个对象; 每当shared_ptr的最后一个所有者被销毁时,关联对象或关联资源就会被删除
Gabriel
2022-11-15
1.4K0
基于VS2019多线程上传下载器
编译环境:Win10 VS2019 Server端: server.cpp // server.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 #include <stdio.h> #include "stdafx.h" #include "network.h" //UDP 网络编程 int _tmain(int argc, char* argv[]) { int errCode = 0; errCode = InitializeSocket(); //初始化套接字库
Gabriel
2022-11-15
3490
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) { int l = 31; while(l >= 0) { if(x & (1<<l)) {
Gabriel
2022-11-15
1140
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=='-') b=4; return b; } int main() { int t,j,k,m,n; int f1
Gabriel
2022-11-15
1280
ZOJ Problem Set - 1004
原理:DFS #include<iostream> #include<string> #include<stack> using namespace std; string a,b;//用来存每组字符串的第一个和第二个 int sum;//用来存每组需要的操作数目(等于第一组字符串长度的二倍) //深度优先搜索函数,六个参数分别为, //第一个字符串(初始字符串),第二个字符串(目标字符串),中间栈, //出栈组成字符串,用来存放出入栈的字符数组,执行到当前的出入栈操作综合 void dfs(strin
Gabriel
2022-11-15
1650
ZOJ Problem Set - 1015
原理:弦图判断 /* 弦:连接环中不相邻的两个点的边 弦图:一个无向图称为弦图,当图中任意长度大于3的环都至少有一个弦 算法:先对图进行重新编号,然后根据新的编号检查 */ #include <cstdio> #include <cstring> using namespace std; int n, m; bool g[1024][1024], used[1024]; int lable[1024], set[1024]; //lable存储图新的编号,set存弦图计算的编号 void Relab
Gabriel
2022-11-15
2000
VS2019:基于UDP协议的回声服务器
编译环境:Windows ,VS2019 UDP_Server.cpp #include <stdio.h> #include <winsock2.h> #pragma comment (lib, "ws2_32.lib") //加载 ws2_32.dll #pragma warning(disable : 4996) #define BUF_SIZE 100 int main() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaDa
Gabriel
2022-11-15
5580
数据结构:红黑树(Red Black Tree)
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它可以在O(log n)时间内(它的查找最坏时间复杂度为O(2lgn))做查找,插入和删除,这里的n 是树中元素的数目。
Gabriel
2022-11-15
3520
算法之美:汉诺塔(Hanoi)问题
设移动盘子数为n,为了将这n个盘子从A杆移动到C杆,可以做以下三步: (1)以C盘为辅助,从A杆将1至n-1号盘移至B杆; (2)将A杆中剩下的第n号盘移至C杆; (3)以A杆为辅助;从B杆将1至n-1号盘移至C杆。
Gabriel
2022-11-15
3220
数据结构:单链表(编译环境:Ubuntu18.04 Vim)
单链表: 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
Gabriel
2022-11-15
1990
算法之美:回溯法解决八皇后问题
八皇后问题原理:在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后,因此,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n1×n1,而皇后个数也变成n2。而且仅当 n2 ≥ 1 或 n1 ≥ 4 时问题有解
Gabriel
2022-11-15
4030
数据结构:约瑟夫环
约瑟夫环原理运作如下: N个人围在一起坐成环状 从K编号开始报数 数到某个数M的时候,此人出列,下一个人重新报数 一直循环,直到所有人出列,约瑟夫环结束 joselooplink.c(编译环境: Ubuntu18.04 ,Vim) #include <stdio.h> #include <stdlib.h> typedef struct node /*头指针型约瑟夫环*/ { int item; struct node *next;
Gabriel
2022-11-15
2540
KMP算法
KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为T),如果它在一个主串(接下来称为S)中出现,就返回它的具体位置,否则返回-1(常用手段)。 假如是在串“SSSSSSSSSSSSSA”中查找“SSSSB”,设置两个指针i,j,比较到最后一个才知道不匹配,然后其中的i回溯,这个的效率是显然是最低的。大牛们是无法忍受“暴力破解”这种低效的手段的,于是他们研究出了KMP算法,其思想就如同我们上边所看到的一样:“利用已经部分匹配这个有效信息,保持i指针不回溯,通过修改j指针,让模式串尽量地移动到有效的位置。”所以,整个KMP的重点就在于当某一个字符与主串不匹配时,我们应该知道j指针要移动到哪?
Gabriel
2022-11-15
2260
算法之美:0-1背包问题(动态规划法,回溯法,贪心法)
2.回溯法:按选优条件向前搜索,以达到目标。 但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择
Gabriel
2022-11-15
3230
C++ 工资发放系统(附UML图)
编译环境:win10(64bit),VS2017 UML: 📷 main.cpp #include <iostream> using namespace std; #include "employee.h" #include "salariedemployee.h" #include "commissionemployee.h" #include "basepluscommissionemployee.h" #include "hourlyemployee.h" int main() { Sa
Gabriel
2022-11-15
5700
C++ 菱形继承
C++支持多重继承,也就是菱形继承,它是指两个子类继承了同一个父类,而又有子类同时继承了这两个子类。
Gabriel
2022-11-15
4210
位运算训练
二,输入一个整数 a,再输入两个整数 p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1 到 p2位
Gabriel
2022-11-15
2600
数据结构:C语言 走迷宫---栈/队列实现
走矩阵迷宫,0代表可以走,1代表障碍物 栈实现: #include <stdio.h> #define MAX_ROW 5 #define MAX_COL 5 struct point { int row; int col; }; struct point stack[512]; int top = 0; void push(struct point p) { stack[top++] = p; } struct point pop(void) { return stack[-
Gabriel
2022-11-15
8470
算法之美:斐波那契数列(Fibonacci sequence)
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368… 这个数列从第3项开始,每一项都等于前两项之和。 表达式:F[n]=F[n-1]+F[n-2](n>=3,F[1]=1,F[2]=1)
Gabriel
2022-11-15
4060
数据结构: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; void init_stack() { top = 0; } void push(node *p) { stack[top++
Gabriel
2022-11-15
3190
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档