本帖主要记录一些自己在刷题过程中的一些笔记,包括:

1、常用的函数

2、STL中常用方法

3、常见错误

4、其他常用方法

5、刷题过程中的常见算法:https://www.cnblogs.com/Mered1th/category/1403573.html


一、常用函数

头文件  #include<cctype>

isalpha 字母(包括大写小写)

islower (小写字母)

isupper (大写字母)

isalnum(字母大写小写+数字)

isblank(space和\t)

isspace(space、\t、\r、\n)

char t=tolower(c)将字符转换为小写字符赋值给t

头文件  #include<stdlib.h>

绝对值函数 abs()


substr()函数:作用是截取某个字符串中的子串

 string s;
 getline(cin,s);//输入
 ) //表示从下标4开始一直到结束
 ,) //表示从下标5开始,3个字符

如果是char s[len], 输入要改为cin.getline(s,len)

 string s;
 getline(cin,s);

 ];
 cin.getline(str,);

strcmp()函数:字符串比较函数,注意返回值

 strcmp(str1,str2);

若str1=str2,则返回零; 若str1<str2,则返回负数; 若str1>str2,则返回正数。

这个大部分情况下可用String代替。


取整函数:

向上取整直接可用+0.5

ceil(x)返回不小于x的最小整数值(然后转换为double型)。

floor(x)返回不大于x的最大整数值。

round(x)返回x的四舍五入整数值。


find和count的区别

count函数的功能是:统计容器中等于value元素的个数。先看一下函数的参数:

 count(first,last,value); 

first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。

如果有返回1,无则返回0。返回值只能是1或0

而find()函数是返回其元素的位置(迭代器)


sprintf、sscanf用法

 //sscanf的作用:把字符数组str中的内容以"%d"的格式写到n中

 sscanf(str,"%d",&n);

 //sprintf的作用:把n以"%d"的格式写到str字符数组中

 sprintf(str,")

 //str必须为数组名,不能是string类

stoi、stod函数(仅C++11支持):

 //作用:分别将字符串转换为int或double型

 //to_string函数:

 ); //将123转换为字符串

 //c_str()函数:返回字符串首字符地址

 //string类s1输出时可以printf("%s",s1.c_str());

二、STL中常用方法

vector初始化:

 vector<)//容量为n,初始值为1

vector容器的去重unique函数:

利用unique函数,unique()作用是将不重复的元素往前移(将重复元素往后移动),返回值是重复元素的第一个位置。
先排序,去重配合erase函数。

 ans.erase(unique(ans.begin,ans.end),ans.end)  //用unique前先排序

vector的erase与insert要用迭代器,string的erase和insert无须迭代器。

s.insert(0,4-s.length(),'0');  在0的位置插入4-s.length()个'0'

s.find返回的是下标的值,如果没有,用 “==string::npos”


 lower_bound(first,last,val); //第一个值大于等于val的元素的位置
 ,-); //第一个值大于val的元素的位置

函数返回的是位置! 如果要变成下标需要在后面减起始地址a


三、常见错误

常见错误:

1、段错误:大部分是因越界、非法访存引起的

2、浮点错误:除数或余数为0

3、注意输出的格式和单复数。


四、其他

C++构造函数写法

 class Complex{
     double real, imag;
     Complex();  //第二个参数的默认值为0
 };

 Complex::Complex(double r,double i){
     real = r;
     imag = i;
 }

实例:结构体Point用于存放平面点的坐标x,y

 struct Point{
     int x,y;
     Point(){};
     Point(int _x,int _y){
         x=_x;
         y=_y;
     }
 };

结构体内重载小于号    A1129  Recommendation System

 struct node {
     int value, cnt;
     bool operator < (const node &a) const {
         if (cnt != a.cnt){
        return cnt > a.cnt;  
       }
     else return value < a.value;
     }
 };//将node按照cnt排序,如果cnt相等就按value排序

完全二叉树的静态存储:

起始编号为0:index*2+1, index*2+2
起始编号为1,index*2,index*2+1


 
链表中有无效节点排序:在结构体中增加一个bool flag=false,将有效节点标记为true

 bool cmp(node a,node b){
     if(a.flag==false||b.flag==false){
         return a.flag>b.flag;  //这样无效节点会排在后面
     }
         else return a.value<b.value;
 }

散列表
常用方法:
1、除留余数法通常mod与表长取相同 
2、平方探测法:正向:(H(key)+k²)%TSize   (考过2次)
          负向:((H(key)-k²)%TSize+TSize)%Tsize (未考)
          其中   k∈[0,TSize)
若0-TSize-1找不到,当k>=TSize时也一定找不到位置
3、链地址法可用数组操作:  Link[0]-Link[mod-1]

字符串hash映射:

1、如果只有A-Z(A-Z视为0-25)二十六进制转换为十进制:
id=id*25+(S[i]-'A')   最大26^len-1
 
 
2、如果又有a-z(视为26-51)
A-Z:id=id*52+(s[i]-'A')
a-z:id=id*52+(s[i]-'a')+26  最大52^len-1

3、有数字,增加进制数。举例:

  

PAT-甲级刷题笔记和总结的更多相关文章

  1. 《Data Structures and Algorithm Analysis in C》学习与刷题笔记

    <Data Structures and Algorithm Analysis in C>学习与刷题笔记 为什么要学习DSAAC? 某个月黑风高的夜晚,下班的我走在黯淡无光.冷清无人的冲之 ...

  2. Python 刷题笔记

    Python 刷题笔记 本文记录了我在使用python刷题的时候遇到的知识点. 目录 Python 刷题笔记 选择.填空题 基本输入输出 sys.stdin 与input 运行脚本时传入参数 Pyth ...

  3. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

  4. PAT甲级 排序题_C++题解

    排序题 PAT (Advanced Level) Practice 排序题 目录 <算法笔记> 6.9.6 sort()用法 <算法笔记> 4.1 排序题步骤 1012 The ...

  5. 《剑指offer》刷题笔记

    简介 此笔记为我在 leetcode 上的<剑指offer>专题刷题时的笔记整理. 在刷题时我尝试了 leetcode 上热门题解中的多种方法,这些不同方法的实现都列在了笔记中. leet ...

  6. 18.9.10 LeetCode刷题笔记

    本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...

  7. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  8. LeetCode刷题笔记 - 12. 整数转罗马数字

    学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...

  9. 1080 Graduate Admission——PAT甲级真题

    1080 Graduate Admission--PAT甲级练习题 It is said that in 2013, there were about 100 graduate schools rea ...

随机推荐

  1. 免费申请一年版Eset NOD32 Antivirus激活码(无限制)- 已失效

    You will receive a 1-year license of the antivirus software Eset NOD32 (version 6), including all up ...

  2. 使用Socket的简单Web服务器

    Socket类在System.Net.Sockets命名空间 常用的操作 Bind:绑定一个本地的终结点 Listen:进入监听状态,并设置等待队列 Accept:等待一个新连接,当连接到达时,返回一 ...

  3. 使用jenkins进行项目的自动构建部署

    jenkins 简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目和监控外部调用执行的工作. 官网地址地址: https://je ...

  4. jenkins系列(9)--插件之Archive The Artifacts

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  5. Java中生产者与消费者模式

    生产者消费者模式 首先来了解什么是生产者消费者模式.该模式也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例.该问题描述了两个共享固定大小缓冲区的线 ...

  6. poj-1239(递推关系)好难

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  7. SQL Server2008 R2命令行启动及停止SQL服务的方法

    ===================================================== 在 SQL Server中,想要启动或停止SQL Server服务,通过SQL Server ...

  8. 结构体:HASH表模板

    这种 HASHMAP 就是一个链式前向星的表: 其中: init 函数:hashmap 创建初始化: check 函数:寻找 hash 表中是否有需要查找的值,若有则返回 1 ,否则返回 0 :遍历方 ...

  9. BZOJ2460,LG4570 [BJWC2011]元素

    题意 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越强,但物极必反:有 ...

  10. test20180919 递归问题

    题意 定义 \[ f(n)=\left\{ \begin{array}{} 1 & n=1\\ f(n-f(f(n-1)))+1 & n>1 \end{array} \right ...