2025年n诺算法笔记

n诺算法笔记第一章基础 输入输出 C 输入 1 scanf 注意 字符串不用取值符 一些说明 scanf c 格式可以读入空格和换行 而其他的字符都已空白符 空格 换行 为结束判断标志 不读入 2 gets 读入一整行 使用 gets 时

大家好,我是讯享网,很高兴认识大家。

第一章基础

输入输出

C

输入
1、scanf()
注意 字符串不用取值符
在这里插入图片描述
讯享网
在这里插入图片描述

一些说明:
scanf() %c格式可以读入空格和换行,而其他的字符都已空白符(空格,换行)为结束判断标志,不读入
2、gets()
读入一整行
使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了。
但是,如果前面使用的不是 gets() 而是 scanf,那么通过键盘给 ch 赋值前就必须先使用 getchar() 清空缓冲区。

输出
printf()
在这里插入图片描述
在这里插入图片描述
long long 的使用
int 范围-1e9到 1e9, long long 范围-1e18 到 1e18

获取字符的ASCII码
在这里插入图片描述

C++

获取一行

while(getline(cin,s)) { 
    if(s=="")break; } //前面cin后面加getchar消除回车 while(cin>>n) { 
    getchar(); getline(cin,s); } 

讯享网

好处:

  1. C++的输入输出敲起来更快 C++的 string 类对于字符串操作很方便, 但是输入输出只能用 cin、 cout。
  2. 当输入或输出格式有特殊要求的时候, cin 和 cout 不方便解决, 那么我们还是使 用 scanf 和 printf 来解决问题
  3. 要注意的是 printf 尽量不要和 cout 同时使用, 会发生一些 不可控的意外
  4. 不要排斥混合编程

多组输入输出问题

讯享网#include <bits/stdc++.h> using namespace std; int main() { 
    int a, b; while (scanf("%d%d", &a, &b) != EOF) { 
    printf("%d\n", a+b); } return 0; } 
  • !=EOF 的意思一直读取到文件末尾( End of file)
  • 另外要注意初始化问题,初始化在while循环内

头文件

在这里插入图片描述
完整头文件
在这里插入图片描述

复杂度问题

一般情况下我们可以默认评测机一秒内可以运行 1e7 条语句
在这里插入图片描述
但是测试数据可能偷懒,没有这么多个

数学函数

fabs(double x)//取绝对值 floor(double x)//向下取整 ceil(double x)//向上取整 sqrt(double x)//算术平方根 round(double x)//四舍五入函数,3.5为4 max() min() swap()//交换x和y的值 

C++STL

见算法笔记,下面记录一些注意事项

map

map<Int,int> map<string,int>等等只要int是第二个值,初始值默认为0

讯享网M.find(flag)!=M.end() 

string

s.substr(pos, n)返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)

sort

sort()函数:
依次传入三个参数,要排序区间的起点,要排序区间的终点+1, 比较函数。 比较函数可以不填,则默认为从小到大排序
注意:
vector sort排序要用迭代器

vector<int>q; q.push_back(1); sort(q.begin(),q.end(),cmp); 字符串排序也用迭代器 string s; sort(s.begin(),s.end(),compare); 

fill()

多维数组赋值

讯享网int a[100][100][4]; fill(a[0][0],a[0][0]+100*100*4,11);//首元素地址 

初始化慎用memset(),除了初始化为0

函数参数

数组作为参数

一维数组

void bubbleSort(int * arr, int len) //int * arr 也可以写为int arr[] 地址传递 

二维数组传递

讯享网void find(char a[3][10]; void find (char a[ ][10]); void find (char (*p)[10]); 

第二章

第三章

数学类问题

第五章

栈、树

第六章

搜索

第七章

图论

第八章

动态规划

小讯
上一篇 2025-04-06 13:54
下一篇 2025-04-10 08:22

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/50778.html