c++
EIDoradol
写点什么给自己,原来代码是可以很有趣的
展开
-
未知数据规模的保存方法
#include "iostream"#include "vector"using namespace std;int main(){ int m, t; vector<int> v; cin >> m; for (int i = 0; i < m; i++) { while (1) { scanf("%d", &t); v.push_bac原创 2021-04-04 21:09:04 · 191 阅读 · 0 评论 -
C++项目(有注释超详细)
集合了C++笔试面试的构造函数和析构的知识点,有注释便于理解实例化的过程。原创 2020-08-26 20:01:20 · 9887 阅读 · 7 评论 -
剑指offer刷题——leetcode中等+
题目一:链表class Solution {public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { int carry = 0; ListNode *root = new ListNode(0), *n = root; while (l1 != NULL || l2 != NULL || carry) { int v1 = 0, v2 = 0;原创 2020-07-28 09:30:29 · 143 阅读 · 0 评论 -
2020智算之道第二次第一题
小明正在上楼梯,当小明逐渐接近某层楼的时候,这层楼的声控灯检测到小明的脚步声便会亮起来,当小明逐渐远去的时候,声控灯由于一段时间内没检测到声音又会灭下去。由于小明是匀速上楼的,而且他的速度把控得刚刚好,脚步声的音量也十分恰当,使得灯的亮灭呈现出这样的状态:他当前所在的楼层的声控灯是亮起的,他即将抵达的下一层楼的声控灯是亮起的,他刚刚离开的那层楼的声控灯也是亮起的。现在你站在楼的外面,通过窗户看到了灯的亮灭状态,请推断小明现在在几楼?输入格式每个测试点包含以下内容:第一行给出一个整数 TTT,表示接原创 2020-07-19 20:39:57 · 454 阅读 · 0 评论 -
虚析构和纯虚析构(C++)
解决父类无法释放子类的堆区内存问题。注意:纯虚析构无法实例化虚析构和纯虚析构多态使用时,如果子类有对象开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码解决方式:将父类中的析构函数改为虚析构或者纯虚析构虚析构和纯虚析构的共性:可以解决父类指针释放子类对象都需要有具体的函数实现虚析构和纯虚析构的区别:如果是纯虚析构,该类属于抽象类,无法实例化对象#include<stdio.h>#include <iostream>#include<stri原创 2020-07-19 17:01:51 · 185 阅读 · 0 评论 -
剑指offer刷题——字节跳动
字节的题就是个憨憨!!!纯粹是在考阅读理解,语法和知识点都相对基础,但是题目真的不知所云,难度总体不如鹅厂。第一题我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议1.我们在字节跳动大街的N个建筑中选定3个埋伏地点。2.为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,计划还是失败了,孔连顺原创 2020-07-03 22:22:01 · 382 阅读 · 0 评论 -
剑指offer刷题——腾讯真题
原创 2020-06-20 00:06:44 · 236 阅读 · 0 评论 -
剑指offer刷题——腾讯真题(C++)
无需算法,比较简单。经典01背包问题原创 2020-06-17 08:48:42 · 247 阅读 · 0 评论 -
剑指offer刷题——股票最大利润(C++)
题目贪心法从左到右更新最大利润class Solution {public: int maxProfit(vector<int>& prices) { if(prices.empty())return 0; int maxv = 0; for(int i = 1,minv = prices[0];i<prices.size();i++) { maxv = max(maxv,pric原创 2020-06-16 22:04:48 · 260 阅读 · 0 评论 -
剑指offer刷题——反转二叉树(C++)
牛客网二叉树镜像递归实现当然这样时间复杂度会高一些,也可以用swap()直接交换,不过只要理解了交换的步骤,怎么优化也就不是问题了。class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot) { TreeNode* p=pRoot->left; TreeNode* q=pRoot->right; p原创 2020-06-16 21:39:13 · 220 阅读 · 0 评论 -
C++线程池详解
今天上午试了一下阿里的面试题目,有关于线程的问题总结一下什么是线程池?它干了什么?1、解决任务处理2、解决阻塞I/O3、解决线程创建和销毁的成本问题4、管理线程如储存日志到磁盘中(磁盘速度要慢很多)log("xx-xx-xx%s\n");//zhi...原创 2020-05-08 23:27:53 · 2057 阅读 · 5 评论 -
TCP服务端发送数据(C++)
本文记录C++实现TCP协议的服务端部分,注意文中的阻塞态会长期存在,知道客户端响应为止。#include "pch.h"#include <iostream> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; int main(int argc...原创 2020-05-04 23:08:28 · 1608 阅读 · 0 评论 -
蓝桥杯模拟赛c++实现村子规划费用问题
最小生成树问题先来了解一下最小生成树在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。其实就是来计算最小权的算法,本文用prim算法实现for (i = 2; i <= n; i++) { ...原创 2020-04-26 20:38:09 · 382 阅读 · 0 评论 -
C++ 使用dos的例子
#include<stdio.h> #include<string.h> #include<stdlib.h> void main() { char cmd[20]="shutdown -s -t "; char t[5]="0"; int c; system...原创 2020-04-26 20:28:27 · 380 阅读 · 0 评论 -
STL标准库(二)
补充关于库函数的操作Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素。对前一篇文章的迭代器作一个补充...原创 2020-04-13 20:53:09 · 245 阅读 · 1 评论 -
STL标准库(一)
目录1.containers容器2.iterators迭代器3.allocator空间配置器4.adapters配接器5.algorithms算法6.functors仿函数致敬开发者Alexander Stepanov、Meng Lee和David R Mussercontainers算法重要,但是算法是建立在对数据操作的基础上,如何存放数据显得尤为重要。在STL开发者大牛的...原创 2020-04-10 19:59:40 · 549 阅读 · 3 评论 -
c++关于ctime那些事儿
库函数C++的标准库没用给具体时间日期的函数,而是用了c中的时间日期的函数,比如说之前提到的那个C++随机点名软件,就用到了ctime中的随机数种子。#include <iostream>#include <ctime> using namespace std; int main( ){ // 这个是随电脑的时间 time_t now = ...原创 2020-04-08 12:35:37 · 632 阅读 · 0 评论 -
minwinbase.h报错的解决方法
把winbase.h头文件改成windows.h原创 2020-04-04 12:13:25 · 1309 阅读 · 0 评论 -
C++飞机大战代码(供研究参考)
自认为代码的可读性还是比较高的,大家有不懂的地方可以查一下#include<iostream>#include<windows.h>#include<conio.h>#include<time.h>#include<string>using namespace std;/*=============== all the s...原创 2020-04-03 09:12:31 · 3209 阅读 · 5 评论 -
C++多线程入门
多线程多线程好比多个车道,作用是来处理一波车流量,让所有车辆同时通行,在程序中则是对对个任务同时并行处理。怎么实现?线程的创建主要依赖于头文件pthread.hex我们知道要有良好的语言习惯,内存不用之后,一定要释放,线程也是如此。在create它之后,一定要make it exited!!!在线程结束时也要保证所有线程全部结束后再退出!编程也是一门艺术,我们学会它之后,也...原创 2020-04-01 20:27:44 · 273 阅读 · 1 评论 -
c++数据抽象
什么叫数据抽象?比如说一架飞机,我们知道它会飞,但是怎么飞、飞行原理我们并不清楚。因此,我们可以说飞机把它的内部实现和外部接口分离开了,我们无需知道它的内部实现原理,直接通过它的外部接口(机票)就可以登机起飞。就 C++ 编程而言,C++ 类为数据抽象提供了可能。它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。例如,您的程序可以调用abs() 函...原创 2020-03-24 09:52:03 · 448 阅读 · 1 评论 -
C++static类的特点
首先我们看一下这样一段程序:#include<iostream>using namespace std;class MyClass{public: static int count;};int MyClass::count = 5;//必须有初值int main() { MyClass a; MyClass b; a.count = 20; cout <...原创 2020-03-13 16:46:13 · 388 阅读 · 1 评论 -
蓝桥杯 对局匹配c++
这个题目用自己的笨办法试了一下,AC成功。例如当K=2时,可分为 {0, 2, 4, 6, 8, …},{1,3, 5, 7, 9, …}共2组。可以发现不同组的数无论如何选择,都不可能相互间相差K,那么我们只需要求每组选出的最大人数之和即可。0作为一个特殊情况只需要判断和自己是否相等的数就行,剩下的情况设一个数据范围来比较,用时能相对短一些。#include <stdio.h>...原创 2020-03-04 22:15:01 · 480 阅读 · 2 评论 -
随机点名软件c++
随机点名这两天上网课,经过高人点化,写了一个万恶的随机点名抽查同学作业的c++小程序。主要思路就是用time这个函数产生的随机种子来生产随机数。需要time.h这个库直接干货!#include <stdio.h>#include <stdlib.h>#include <time.h>#include <iostream>#includ...原创 2020-02-22 20:35:58 · 4885 阅读 · 0 评论 -
斐波那契和汉诺塔实现 递归算法
递归递归的意思就是一个函数在自己内部不断调用自己的过程,通过反复调用,可以用步步蚕食的方法,解决掉一个比较复杂的问题。总之的递归的核心在于分而治之的思想,在大的问题中发现规律,把体量较大的问题分割开,从问题最小的部分入手,由小到大,逐步解决问题。相信好多人第一次看递归的代码都觉得,这个代码不复杂啊,才几十行而已,但是细读发现并不好理解,这也正是递归的特点,由于在函数中调用函数本身,往往不容易看...原创 2020-02-20 12:24:33 · 333 阅读 · 0 评论 -
Huffman数c++实现
Huffman数思想(1) 以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林F={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的根结点;(2) 在F中选取两棵根结点权值最小的树作为左右子树构造一棵新二叉树,并且置新二叉树根结点权值为左右子树上根结点的权值之和(根结点的权值=左右孩子权值之和,叶结点的权值= Wi)(3) 从F中删...原创 2020-02-13 09:23:14 · 252 阅读 · 0 评论 -
vector c++实现
什么是vector首先,vector容器是一种牛到无视数据类型的存储容器,可以存放c语言的基本数据类型,还可以存放结构体,甚至是类,这正是我们想要的简单强大的工具,个人认为功能强于链表。怎么写一个vector?首先需要包含这个头文件。#include<vector>using namespace std;vector<int>vi;//存放整数的容器vecto...原创 2020-02-12 22:23:39 · 290 阅读 · 0 评论 -
Lake Counting积水问题 dfs深度搜索
原题链接:Lake Counting深度优先搜索从任意w开始,把邻接部分全部用’.‘代替。一次DFS可以把初始和这个w连接的所有w替换为‘.’,直到兔子不存在w为止,总共次数也就是DFS的次数,即为原题中的水池个数。复杂度为O(8NM)=O(M*N)。#include <iostream>#include<cstdio>using namespace std;...原创 2020-02-10 21:29:31 · 341 阅读 · 2 评论 -
c++对链表的操作(一)
初识链表很多初学者觉得链表和数组一样都是顺序存储结构,同样每个数据都有自己的指针,它们到底有什么区别?链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素。链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL...原创 2020-02-09 10:19:56 · 1651 阅读 · 0 评论 -
C++文件操作演示(win10)
一,使用open函数打开文件(使用ifstream)在我的前一篇博文c++面向对象简介中,用ifstream介绍了c++中的文件操作函数ifstream。在这篇文章中给大家介绍一下具体使用方法。1.绝对路径读取文件特别注意,在windows系统中的绝对路径如下:D:\programming\1.txt但是在程序中应当改为:D:\programming\1.txtopen函数void...原创 2020-02-02 17:14:56 · 682 阅读 · 0 评论 -
C++类和对象入门
什么叫面向对象?对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。(这是什么玩意,,,,,)通俗一点,对象就类似于C语言中的结构体,一个事物可以包含好多功能,比如你...原创 2020-01-30 12:47:44 · 1763 阅读 · 1 评论