oJ练习(C++)
文章平均质量分 52
学校OJ系统刷题笔记,全部为C++代码解题.
Coder_by
用技术提升美好事物发生的概率。
展开
-
c#笔记01
在 Java 和 C# 中,引用对象的方法参数始终都是通过引用传递的,而基元数据类型参数(C# 中的值类型)是通过值传递的。C# 提供 Java 中可用的所有数据类型,并增加了对无符号数字和新的 128 位高精度浮点类型的支持。在 C# 中,若要通过引用传递值类型,需要指定关键字。C# 中的异常处理与 Java 中的异常处理非常相似。在 Java 和 C# 这两种语言中,,C#中字符串开始前使用。在 C# 和 Java 中,注:using有另一种用法。常量,Java 使用。,Java中使用的是。原创 2023-11-08 19:45:52 · 87 阅读 · 0 评论 -
c#笔记02
-DBHeloerSqlServer.cs //数据库操作方法。 -Bootstrapper.cs //配置DAL,BLL,注入。 -OperateMessage.cs //公共跳转页面。 Model //数据库对应Model,与数据库字段映射。 -Models //View上使用的Model。 -Web.config //配置数据库。 Common //工具类。 -Views //页面。 DAL //数据库逻辑。 Lib //第三方库。 BLL //逻辑。原创 2023-11-08 20:06:49 · 88 阅读 · 0 评论 -
解压缩带括号的字符串
如果当前字符是左括号’(‘,则将当前的num压入nums栈中,并将res压入strs栈中,然后重置num为0,res为空字符串。然后将strs栈顶的字符串重复times次,并将其添加到res中。最后,将res赋值给strs栈顶的字符串,并弹出该字符串。在main函数中,首先读取一个压缩后的字符串compressed,然后调用decodeString函数对其进行解压缩,并将解压缩后的结果输出到控制台。解析: 解压缩字符串函数:使用一个栈来存储数字和字符串,通过遍历输入的字符串,根据不同的字符进行相应的操作。原创 2023-10-22 15:29:53 · 83 阅读 · 0 评论 -
带通配符的字符串匹配
外层循环遍历x字符串的每个字符,内层循环遍历y字符串的每个字符。‘,则dp[i][j]等于dp[i-1][j-1];如果当前字符为通配符’*',则dp[i][j]等于dp[i-1][j]或dp[i][j-1]。然后,在main函数中,程序从标准输入读取两个字符串,并将它们存储在x和y数组中。接下来,程序计算这两个字符串的长度,并将dp数组的第一个元素设置为1。这段代码的作用是判断两个字符串是否匹配,其中通配符’*‘可以匹配任意数量的字符,而通配符’?最后,程序检查dp数组的最后一个元素是否为1。原创 2023-10-22 15:24:07 · 329 阅读 · 0 评论 -
C++STL
C++STLC++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。六大组件STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。容器各种数据结构,如vector、list、deque、set、map等,用来存放数据。从实现角度来看,STL容器是一种class template。STL中的容器有序列式容器、关联容器、容原创 2020-06-29 14:32:21 · 3434 阅读 · 0 评论 -
C++11新特性
参考文档:https://www.jianshu.com/p/d0a98e0eb1a8C++ 11中引入了大量非常有用的特性,使代码更直观、安全、简洁、方便。初始化列表 Initializer List所有STL容器都支持初始化列表,如下:std::vector<int> v = { 1, 2, 3 };std::list<int> l = { 1, 2, 3 };std::set<int> s = { 1, 2, 3 };std::map<int.原创 2020-06-29 14:31:48 · 453 阅读 · 0 评论 -
C++进阶
参考文档:C++教程C++ 文件和流数据类型描述ofstream该数据类型表示输出文件流,用于创建文件并向文件写入信息。ifstream该数据类型表示输入文件流,用于从文件读取信息。fstream该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。要在 C++ 中进行文件处理,必须在 C++ 源代码文件中包含头文件 <iostream> 和 <fs.原创 2020-06-29 14:31:12 · 476 阅读 · 0 评论 -
C++面向对象
参考文档:C++教程C++ 类 & 对象C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。类定义是以.原创 2020-06-29 14:30:34 · 959 阅读 · 0 评论 -
C++面向过程
参考文档:C++教程C++ 简介概述C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。**注意:**使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。面向对象C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:封装数据隐藏继承多态标准库标准的 C++ 由三个重要部分组成:**核心语言:**.原创 2020-06-29 14:29:54 · 1176 阅读 · 0 评论 -
数据结构-1 链表
线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构。非线性结构:不满足线性结构的数据结构。目录链表(单向链表的建立、删除、插入、打印)1、链表分类 2、基本概念3、链表与数组比较4、单向链表的建立5、malloc函数6、free函数7、单向链表的删除操作8、头节点和头指针9、单向链表的插入链表(单向链表的建立、删除、插入、打印)1、链表分类 单向链表 双向链表 环形链表2、基本概念...原创 2020-05-31 08:25:47 · 982 阅读 · 0 评论 -
Dijkstra 最短路径算法详解 无向图
假设我们起点是A,我们要求到F的最短距离,我们会怎么做? 首先,因为A是起点,所以我们把对于每个点都有个参数,相对于A的距离,默认除了A到A为0,其他都是无穷大。 从起点A开始,我们更新与A相连通的点到A的距离,并把A点标记。如图: 我们遍历一次所有点与A的距离,找到最小的,这里是点B。 以它为起点,把它周围未被标记的点拿来做比较,显然,像F这种没有与A练过的点,当前距离就会变成min(dis[B...转载 2018-07-08 17:26:42 · 558 阅读 · 0 评论 -
希尔排序
#include <iostream>#include <iomanip>using namespace std;void swap(int &x, int &y){ int temp = x; x = y; y = temp;}void shellsort(int a[], int sz){ int ...原创 2018-07-08 16:16:38 · 112 阅读 · 0 评论 -
直接插入排序
#include <iostream>#include <iomanip>using namespace std;void swap(int &x, int &y){ int temp = x; x = y; y = temp;}void insertion(int a[], int sz){ for(in...原创 2018-07-08 15:54:59 · 125 阅读 · 2 评论 -
并归排序图解
所以,归并排序其实要做两件事:(1) 分解:将序列每次折半拆分。(2) 合并:将拆分开的两个序列排序后合并。只要理解了归并排序的思想,就很容易实现归并排序。...原创 2018-07-07 15:32:23 · 466 阅读 · 1 评论 -
istringstream sin(s)
C++中有三种字符串流,分别是istringstream ,ostringstream,stringstream,分别处理字符串流的输入,输出,和输入输出。istringstream sin(s);定义一个字符串输入流的对象sin,并调用sin的复制构造函数,将s中所包含的字符串放入sin 对象中!istringstream sin(s);string c;while(sin>>c){...原创 2018-07-06 15:34:16 · 2289 阅读 · 1 评论 -
快速排序
#include<iostream>using namespace std;int s[]={5,6,4,8,7,9,1,2,3};void sort(int s[], int l, int r){ if (l < r) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 ...原创 2018-07-05 14:49:34 · 163 阅读 · 3 评论 -
kmp
根据KMP的next函数的性质,已知字符串t第K个字符的next[k],那么d=k-next[k],如果k%d==0,那么t[1……k]最多可均匀的分成k/d份。也就是可以生成一个长度为d的重复度为k/d的字串。题意:求最小子串的循环次数;思路:(转)KMP,next[]表示模式串如果第i位(设str[0]为第0位)与文本串第j位不匹配则要回到第next[i]位继续与文本串第j位匹配。则模式串第1...原创 2018-06-26 16:15:13 · 1018 阅读 · 0 评论 -
按字典序排列字符串
对字符串进行排序,在排序中,字符串 “bc”,“ad”,“ac”,“hello”,“xman”,“little”,“during”,“day”能够排序成 “ad”,"ac",“bc”,“during”,“day”,“hello”,“little”,解法:排序类问题无论任何变化,不管是排字符串还是按某种规则排序,本质都是一样,所变化的无非是元素的比较方式。对于该题目同样适用。使用快排,对于两个串,...原创 2018-06-10 17:05:55 · 20433 阅读 · 2 评论 -
字典序
我们先看一个例子。示例: 1 2 3的全排列如下:1 2 3 , 1 3 2 , 2 1 3 , 2 3 1 , 3 1 2 , 3 2 1我们这里是通过字典序法找出来的。那么什么是字典序法呢?从上面的全排列也可以看出来了,从左往右依次增大,对这就是字典序法。可是如何用算法来实现字典序法全排列呢?我们再来看一段文字描述:(用字典序法找124653的下一个排列)你主要看红色字体部分就行了,这就是步骤...原创 2018-06-07 22:57:04 · 549 阅读 · 3 评论 -
搜索
穷竭搜索是将所有的可能性罗列出来,在其中寻找答案的方法。主要有深度优先搜索和广度优先搜索这两种方法1.递归函数在一个函数中再次调用该函数自身的行为叫做递归,这样的函数被称作递归函数。阶乘:int fact(int n) { if (n == 0) return 1; return n * fact(n - 1);}斐波那契数列:int memo[MAX_N + 1];int fi...原创 2018-06-07 18:39:15 · 111 阅读 · 0 评论 -
pair用法
pair的类型: pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。 pair<string,int> p; pair<int ,int > p; pair<double,int> p; 都可以。。。 应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用...原创 2018-06-07 17:22:56 · 1925 阅读 · 0 评论 -
vector用法
一维vector创建一维vector:vector<int> nums; //不指定长度vector<int> nums(n); // 指定长度为n 12添加元素nums.push_back(1); //直接从数组末端添加nums[i] = 1; //直接赋值给第i个位置12删除元素nums.resize(nums.size-i); ...原创 2018-06-01 16:38:20 · 1399 阅读 · 0 评论 -
二叉树常见函数实现方法
二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路:利用递归深度遍历二叉树,一个树的最大深度等于左右子树最大深度+1/** * De...原创 2018-06-01 17:01:29 · 2136 阅读 · 15 评论 -
KMP算法详解
1、如字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。已知空格与D不匹配时,前面六个字符"ABCDAB"是匹配的。查表可知,最后一个匹配字符B对应的"部分匹配值"为2,因此按照下面的公式算出向后移动的位数: 移动位数 = 已匹配的字符数 - 对应的部分匹配值因为 6 - 2 等于4,所以将搜索词向后移动4位。因为空格与C不匹配...转载 2018-05-30 23:16:11 · 152 阅读 · 3 评论 -
cin.get() cout.put()
#include <iostream>using namespace std;int main() { int c; cout << "enter a sentence" << endl; while (c = cin.get() != EOF) cout.put(c); return 0;}可以接受空格输入换行符结束。...原创 2018-05-25 23:59:21 · 529 阅读 · 0 评论 -
一个简单菜单设计
#include <iostream>using namespace std;int main(){ int n; int beishu(int, int); int yueshu(int, int); int jiecheng(int); void shuixianhua(); for (;;) { cout << "主菜单:\n1、最大公约数...原创 2018-05-25 23:56:40 · 1938 阅读 · 0 评论 -
删除erase()函数
C++中string erase函数的使用erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3)iterator erase ( iterator first, iterator last );也就是说有三种用法:(1)eras...原创 2018-05-25 23:38:09 · 1188 阅读 · 0 评论 -
字符串的输入函数详析
1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<...原创 2018-05-25 23:10:18 · 378 阅读 · 0 评论 -
stdlib.h头文件
是一些常用的函数,但是又不知道把它们放到哪里合适,因此就都放到了stdlib.h这个头文件中。stdlib.h可以提供一些函数与符号常量:1函数名称: free函数原型: void free(void* p);函数功能: 释放p所指的内存区函数返回:参数说明: p-被释放的指针2函数名称: malloc函数原型: void * malloc(unsigned size);函数功能: 分配size字...原创 2018-05-25 22:58:26 · 3923 阅读 · 0 评论 -
sizeof()与strlen()详析
char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。不包括\0; int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响,包括\0;============================...原创 2018-05-25 22:54:04 · 129 阅读 · 0 评论 -
c++内存格局
c++程序的内存格局通常分为四个区:全局数据区;代码区;栈区;堆区(即自由存储区)。 全局变量、静态数据、常量存放在全局数据区,所有类成员函数和非成员函数代码存放在代码区,为运行函数而分配的局部变量、函数参数、返回地址等存放在栈区,余下的空间都被称为堆区;new和delete,malloc和free,都从堆中分配和释放内存块,但在具体操作上两者有很大的区别。有持不同观点如下,也是一种分法!根据...原创 2018-05-25 20:36:31 · 359 阅读 · 0 评论 -
c++预处理
c语言中,以下三个属于预处理。1.宏定义;2.文件包含;3.条件编译。宏定义是不参加编译的,只是在编译前做字符替换。#include的作用的就是将其他文件的内容加到该文件中,#ifndef/#define/ #end多用于头文件的定义解决重复包含问题,#define常用于定义的宏。这是C语言里的一种技巧,使多重包涵的时候不会编译出错。例如 fa.h --------------...原创 2018-05-25 19:17:32 · 670 阅读 · 0 评论 -
二进制异或操作
下面是两个二进制数值进行异或计算:11111111xor00000000--------------结果 11111111现实中用的都是十进制的数值,那么我们来看一看两个十进制数值是怎么进行异或计算:5 ⊕ 3 = ?1.进行异或计算前会把数值都转换为二进制:5和3转为二进制分别为:0101 、00110101xor0011--------结果 01102.再把结果 0110 转换为十进制的:63...原创 2018-05-25 19:05:44 · 12414 阅读 · 0 评论 -
有效的括号
题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入 多组数据 每组是一个由'(',')','{','}','[',']' 组成的括号序列 每组字符串长度不超过50。 输出 如果有效输出true, 否则...原创 2018-05-28 16:27:49 · 443 阅读 · 0 评论 -
最小栈
题目描述 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素x推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 输入 第一行一个整数q,表示操作数量。 接下来q行,每行为题目四中操作的一种。 分别为 push x pop top getMi...原创 2018-05-28 16:29:42 · 654 阅读 · 0 评论 -
下一个更大元素
题目描述给定一个数组, 找到每个元素右边第一个比它大的元素。输入 第一行一个整数n,表示数组大小, 接下来一行n个正整数,表示数组中的元素值。 数据范围:n<=100000, 数组中元素值不超过1000000000。 输出 输出一行n个整数 表示每个元素右边第一个比它大的元素,如果没有输出-1。 样例输入42 1 3 4样例输出3 3 4 -1#include<iostream...原创 2018-05-28 16:31:24 · 503 阅读 · 0 评论 -
小孩报数问题
#include<iostream>#include<string>using namespace std;int main(){ struct child { string name; child *next; }; int count,start,m; char...原创 2018-06-03 17:28:51 · 594 阅读 · 0 评论 -
Set Mismatch
题目描述The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition ...原创 2018-05-28 16:25:36 · 190 阅读 · 0 评论 -
Word Pattern
题目描述Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str. Exa...原创 2018-05-28 16:23:07 · 275 阅读 · 0 评论 -
Count Primes
题目描述Count the number of prime numbers less than a non-negative number, n.输入一个整数n(n<=1000000)输出小于等于n的素数的数量样例输入10样例输出4提示Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.#incl...原创 2018-05-28 16:21:25 · 167 阅读 · 0 评论