自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 两数之和

给定一个整数数组 nums 和一个目标值 target,在该数组中找出和为目标值的两个整数,并数组下标,不能重复利用这个数组中同样的元素。暴力法:class Solution{public:vector<int> twoSum(vector<int>& nums,int target){ vector<int> subscript; ...

2019-08-18 23:32:15 174

原创 栈小结

栈是一种只允许在一端进行插入和删除操作的线性表,栈顶是允许插入和删除的那一端,而栈底是不允许插入和删除的那一端基本操作:InitStack(&S);//初始化一个栈StackEmpty(S);//判断一个栈是否为空,若为空则返回true,否则返回falsePush(&S,x);//进栈,若栈S未满,则将x加入使之成为新栈顶Pop(&S,&X);//出栈,若...

2019-08-13 00:05:12 232

原创 stack常见用法

stack翻译为栈,是STL中实现的一个后进后出的容器,要实现stack,要先添加头文件#include<stack>定义:stack<typename> name;stack容器内元素访问,由于栈本身是一种后进先出的结构所以在STL中的stack只能通过top()来访问栈顶元素#include<cstdio>#include<stack&gt...

2019-08-09 14:09:50 342

原创 (Pat甲)1032 Sharing

此题给出两条链表的首地址以及若干结点的地址和数据以及下一个结点的地址,求两条链表首个公用结点的地址,如果没有共用结点的话则输出-1#include<cstdio>#include<cstring>const int maxn = 100000;struct LNode{ char data;//数据域 int next;//指针域 bool flag;//结...

2019-08-08 22:46:58 227

原创 queue常见用法

queue就是队列,在STL中主要实现了一个先进先出的容器,使用queue应该先添加头文件#include<queue>定义queue<typename>name;queue本身是一种先进先出的限制性结构,因此在STL中只能通过front()来访问队首元素,或者是通过back()来访问队尾元素例:#include<cstdio>#include&l...

2019-08-08 20:21:18 6534

原创 string常见用法

string类型是对字符串常见的需求功能进行封装,使得操作起来更加方便,且不易出错。如果使用string需要增加string文件string的定义string str;初始化string str="abcd";string中内容的访问通过下标(像字符数组那样)#include<cstdio>#include<string>using names...

2019-08-08 20:02:10 203

原创 (Pat甲)1060 Are They Equal

题目要求将两个数改写为科学计数法的形式,然后判断它们是否相等。而科学计数法的写法一定为0.a1a2…*10^e,只需要获取科学计数法的本体部分a1a2…与指数e即可判定两个数在科学计数法下是否相等(按有效数为3进行)。应当按整数部分是否为0来讨论,因为数据有可能出现前导0,需要在输入数据后去除所有前导0,这样可以按去除前导0后的字符串的第一位来判断是否是小数点来判断其属于哪种情况以下是代码实现:...

2019-08-08 00:08:12 115

原创 单链表删除最小值结点算法实现

单链表带头结点,删除一个最小值点,,此题在输出方面纠结了很久,所幸得到大佬指点迷津以下是代码#include<cstdio>#include<stdlib.h>typedef struct LNode{ int data;//数据域 struct LNode *next;//指针域}LNode, *Linklist;void Createlist(Lin...

2019-08-07 22:45:24 4407 3

原创 主元素查找算法实现

首先明白什么是主元素,一个整数序列,相同元素的个数大于序列元素的一半就是主元素,,另外元素取值不大于元素个数下面是算法实现:#include<cstdio>const int maxn=50;int M[maxn],n;int majorcount(int M[],int n){ int temp,count=1;//temp用来保存候选主元素 temp=M[0];//...

2019-08-06 16:58:36 425

原创 链表小结

单链表也就是线性表的链式存储,它是指通过一组任意的存储单元来存储线性表中的数据元素,每个链表结点包含存放数据元素的数据域(data域)和存放后继结点的指针域单结点的结点类型描述typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*Linklist;//或typedef struct LNode{ i...

2019-08-05 17:32:34 342

原创 (pat甲)1063 Set Similarity

大意是给出N个集合,然后求出要求的两两集合的相同元素率,即两个元素的交集与并集。设置N个set集合,在读入时将元素放入对应set中,就可以消除同一个集合中的相同元素。之后对每一个查询(查询集合x与集合y的情况),设置两个int型变量total和same,分别表示不同元素的个数以及相同元素的个数,即并集与交集。然后枚举集合中x的元素,判断其是否在集合y中出现过,如果出现,说明找到一个相同元素,令s...

2019-08-04 17:56:48 132

原创 set常见用法

set翻译为集合,是一个内部自动有序且不含重复元素的容器,若使用set,需要使用set头文件,#include<set>set的定义单独定义set<typename> name;set数组定义set<typename> Arrayname[arraysize];Arrayname[0]到Arrayname[arraysize-1]中的每一个都...

2019-08-04 16:52:40 196

原创 用回溯法实现n皇后问题

首先说一下回溯法,如果在到达递归边界前的某层,由于一些事实导致已经不需要任何一个子问题递归,就可以直接返回上一层,这种方法叫做回溯法。#include<cstdio>#include<cmath>const int maxn=50;int n,count=0,D[maxn],hashtable[maxn]={false};void generateD(int in...

2019-08-04 16:20:03 570

原创 递归思想

什么是递归呢?递归就是反复调用自身函数,但是每次把问题范围缩小,直到范围缩小到可以直接得到边界数据的结果,最后再在返回的路上得到相应的解。递归的逻辑中有两个重要的概念:递归边界,递归边界用来返回最简单底层的结果递归式,也叫递归调用,递归式用来减少数据规模并向下一层递归以下经典例子,求n!#include<stdio.h>int F(int n){ if(n==1) ...

2019-08-04 09:08:30 154

原创 字符串hash

字符串hash是指将一个字符映射成一个整数,使得该整数可以尽可能地通过H§来唯一地表示字符串S。(令hash函数为H(P)=x*Range+y)若字符串都由大写字母构成,可将A~Z视为0到25,按照二十六进制转换成十进制,实现将字符在映射为整数的需求int hashFunc(char S[],int len){ int id=0; for(int i=0;i<len;i++) {...

2019-08-03 23:51:44 196

原创 vs2017读取访问权限冲突

vs2017提示读取访问权限冲突,原因通常是数组超限,增大数组界限即可,记录在博客,以此告诫。

2019-08-03 23:32:27 2165

原创 (pat甲)1039 Course List for Student

这道题因为最后一组数据庞大,所以使用map和string会超时,也不要使用cin和cout进行输入或者输出,若用二维数组存放学生所选的课程编号会导致最后一组数据内存超限,所以使用vector来减少空间消耗#include<cstdio>#include<cstring>#include<vector>#include<algorithm>u...

2019-08-03 23:30:08 123

原创 (pat甲)1078 Hashing

这道题是给出散列表长Tsize和欲插入的元素,将这些元素按读入的顺序插入散列表中,其中散列函数为H(key)=key%Tsize先对输入的Tsize进行素数判断,若不是素数,则要找到第一个比它大的素数,然后开一个bool型数组hashtable[],为false时表示未被使用,若已被使用则跟据二次探查法令步长step为1,然后令下一个检测值为(a+stepstep)%Tsize,判断该位置是否已...

2019-08-02 20:15:56 103

原创 (Pat甲)1015 Reversible Primes

首先说明一下题意,就是输入一个数,然后判断它是不是素数,如果是,将它进行进制转换,转换后得到的数再次进行素数判断,如果是素数。就输出Yes,否则输出No#include<cmath>#include<cstdio>bool isPrime(int n)//判断素数,特别注意n为1的情况,{ if(n==1) return false; fo...

2019-08-02 19:11:32 126

原创 线性表的定义

线性表的顺序存储也叫顺序表,是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。第一个元素存储在线性表中的起始位置,第i个元素的存储位置后面紧接着存储的是第i+1个元素,得知顺序表的特点是表中元素的逻辑位置和其物理顺序相同。假定线性表的元素类型为elemtype,则线性表的顺序存储类型描述为#define MaxSize 50typed...

2019-07-31 23:05:30 170

原创 时间复杂度与空间复杂度浅析

首先要弄明白什么是时间复杂度,大部分的书是通过语句的频度来分析算法中时间复杂度的,或者说将算法中基本操作的执行次数作为算法时间复杂度的度量,实际上,时间复杂度就是一个函数,这个函数用来计算执行基本操作的次数事实上大同小异,一个语句的频度f(n)就是指该语句在算法中被重复执行的次数,将算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数所以将算法的时间复杂度记为(一般用大O表示法):...

2019-07-31 20:13:51 252

原创 算法的基本概念

算法是指对特定问题的一种求解步骤的描述算法的特性:有穷性,一个算法必须在有穷时间内完成确定性,算法中每条指令必须有确切含义,不会产生二义性可行性,算法中描述的操作是可以通过已经实现的基本运算执行有限次来实现的输入,一个算法必须有零个或者多个输入输出,一个算法必须有一个或多个输出一个好的算法应该考虑以下目标:正确性可读性健壮性高效率与低存储量要求...

2019-07-31 19:03:59 123

原创 数据结构基本概念

**数据:**数据是信息的载体或者说对客观事物的符号表示**数据元素:**数据元素是数据的基本单位**数据对象:**数据对象是具有相同性质的数据元素的集合,也就是数据的一个子集**数据类型:**数据类型是一个值的集合和定义在此集合上的一组操作的总称**原子类型:**其值不可以再分割**结构类型:**其值可以再分解**抽象数据类型:**抽象数据组织及与之相关的操作抽象数据类型(AD...

2019-07-31 18:48:32 81

原创 “error MSB6006: “CL.exe”已退出,代码为 2。”

编译环境为vs2019,错误原因是函数未写返回值,记录在博客,以此警醒,希望以后自己不要再犯类似错误

2019-07-30 21:53:31 2856

原创 (PAT甲)1001 A+B Format

这道题是要在结果数字中以逗号分隔,基本思路是将数字用数组存储,然后逆序遍历并输出逗号#include<iostream>#include<algorithm>using namespace std;int main(){ int a,b,num[8],sum; int i=0; cin>>a>>b; su...

2019-07-27 11:14:53 136

原创 (PAT甲)1081 Rational Sum

这道题是一道求输入分数之和的题,可能有负数。如果答案为假分数,则要按照带分数的形式输出,整数则按照整数输出,否则按照真分数输出。注:负数无需特殊处理,只需要当作分子为负数的分数即可 数据范围为int,两个分母相乘时,最大可以达到long long,所以如果使用int会溢出,得到“error” 计算最大公约数时,注意分子分母绝对值的公约数,否则数据会错误 且必须在每一步加法后均进行约...

2019-07-27 01:19:49 96

原创 (PAT甲)1049 Counting Ones

这道题如果直接从1遍历到n会超时,所以要通过特殊的数字寻找规律。规律比较难找,可通过举例子来寻找。可以先给出一个数,然后从低位到高位分别标上1,2,3,4.。。对每号位进行判断解析例如数30710,一号位为0,其左侧为3071,因此在1~n中,仅在高四位为0000~3070中,1号位701才可以取到1,从00001到30701总共有3071种情况,2,3,4,5号位以此推论#incl...

2019-07-26 00:11:48 127

原创 (PAT甲)1008 Elevator

这道题比较水,就是两道if语句判断当前楼层与到达楼层的关系即可,每层楼需要停留5秒的时间,特别注意的是当要求运行楼层轨迹完成时电梯不会返回0层,所以需要手动将到达楼层赋给当前楼层#include<iostream>using namespace std;int main(){ int n, sum = 0, now = 0, to; cin >> n; f...

2019-07-25 22:56:27 161

原创 (Pat 甲)1104 Sum of Number Segments

这道题的目的是统计元素个数为n的序列的每一个在不同序列长度的连续片段中出现的次数之和。通过举例可以得出,若当前是第i个数,那么其总出现次数等于i*(n+1-i)#include<iostream>using namespace std;int main(){ int n; double t, s = 0; cin >> n; for (int i = 1...

2019-07-25 22:14:11 108

原创 (PAT甲)1069 The Black Hole of Numbers

这道题不难,把数字放到数组里然后进行两次排序,得到非递增和非递减的两组数字,不断重复过程最后会得到6174这个数字,特别注意的是输出样例中有四个空格,题目中没有说明,但是可以从输出样例中看出来,当时我就是调试这个花了不少时间,然后注意168这类数字需要用0补齐(在高位补),为0168,因为有补0的关系,这里用c语言会比较方便,我是用c++写的,所以会看着相对冗余#include<ios...

2019-07-24 21:54:35 199

原创 继承与派生以及虚基类小结

继承就是利用原来声明的类作为基础,再加上新的内容,以减少重复的工作量一个派生类只从一个基类派生叫做单继承一个派生类有两个或多个基类的叫做多重继承继承和派生的关系可以表述为派生类是继承的具体化,而基类是派生类的抽象声明派生类的一般形式为:class 派生类名:[继承方式]基类名{派生类新加的成员};继承方式包括:public,private和protected构成一个派生类应...

2019-07-23 22:47:31 364

原创 关于数组的地址计算

数组一般会采用数据存储结构,数组的顺序存储结构有两种:以行序存储以列序存储数组地址的计算对于一维数组:若设A[]A[]={a1,a2,a3....,ai....an}设每个数组元素占据d个存储单元,则元素ai的存储地址为loc(A[i])=loc(A[i])+(i-1)*d对于二维数组:Amn=(图片由all友情提供,一时找不到纸笔emmm)若为行序存储,首元素a11...

2019-07-23 00:06:21 8212 2

原创 对象数组与指针小结

对象数组的每一个元素都是同类的对象如果构造函数只有一个参数,在定义数组时可以直接在等号后面的花括号内提供实参Student stud[3]={60,70,80};在定义数组时提供的实参个数不能超过数组元素如果构造函数有多个参数,应当在花括号中分别写出构造函数名并在括号内指定实参例:Student Stud[3]{ Student(1001,18,87); Student...

2019-07-22 00:05:36 267

原创 析构函数小结

析构函数析构函数是一个特殊的成员函数,其作用与构造函数相反,它的名字是类的名字前面加一个“~”符号,在c++中这是位取反运算符,理解为析构函数是与构造函数作用相反的函数以下四种情况程序会自动执行析构函数:如果在一个函数中定义了对象(假设是自动局部对象),当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数静态局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只有在...

2019-07-21 23:29:05 331

原创 类和对象的使用

对象的初始化不能在声明类时对数据成员进行初始化,因为类不是一个实体,而是一种抽象类型,并不占存储空间,所以无处容纳数据。如果一个类中的所有成员都是公用的,则可以在定义对象时对数据成员进行初始化例:class Time{ public: hour: minute: sec:};Time t1={14,56,30};c++提供了构造函数(constructor)来处理对象的初始...

2019-07-21 20:03:15 114

原创 类和对象基础知识小结

客观世界的任何一个事物都可以看作是一个对象(Object)任何一个对象都应当具有两个因素,即属性和行为在一个系统中的多个对象之间通过一定的渠道相互联系,要使某一个对象实现某一种行为(即操作),应当向它传送相应的消息在C++中,每个对象都是由数据和函数(即操作代码)两部分组成的,数据体现了前面提到的属性,而函数是用来对数据进行操作的,以便实现某些功能可以对一个对象进行封装处理,把它的一部...

2019-07-21 19:12:45 202

原创 字符串小结

定义字符串变量string string1;string string2="DaoZhang";//定义string2的同时对其初始化赋值string1="DaoZhang";输入输出cin>>string1;cout<<string2;字符串变量的运算**1.**字符串复制string1=string1;//作用类似于strcpy...

2019-07-20 23:45:07 132

原创 数组小结

首先要知道什么是数组,简单讲就是有序数据的集合,数组就是用一个统一的名字代表这批数据,然后用序号或者下标来区分各个数据定义一维数组一般形式:类型名 数组名[常量表达式],例如:int a[10]; 表明数组名为a,此数组为整型,有10个元素1. 用方括号括起来的 常量表达式表示下标值,以下写法合法int a[10];int a[2*5];in a[n*3];//假设前面已经定义了n...

2019-07-20 23:18:42 291

原创 静态存储类型小结

静态全局变量1.在全局变量前面加一个static,使该变量只在这个源文件可用,称之为全局静态变量2.静态全局变量对组成该程序的其他源文件是无效的静态局部变量1.静态局部变量在静态存储区内分配存储单元,在程序整个运行期间都不释放,而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间,函数调用后即释放掉2.对静态局部变量是在编译时赋初值,即只赋初值一次,在程序运行时已有初值,...

2019-07-20 22:05:53 2183

原创 函数重载与默认参数小结

对于在不同类型上作不同运算而又用同样名字的情况,称之为重载,也就是一物多用例如:int abs(int);long labs(long);double fabs(double);若用重载,可以改为:int abs(int);long abs(long);double abs(long);c++中用一种函数命名技术可以准确判断出该用哪个abs()函数。abs(-10);//调...

2019-07-20 20:14:52 567

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除