前言
这是我在Datawhale组队学习《交大ACM算法》的记录,既作为我学习过程中的笔记,也供同好们一起交流研究,之后还会继续更新相关内容的博客,欢迎点赞收藏关注。
1. 关于C++
在ACM算法中不需要太多的C++知识,对于新入门者需要掌握C++的基本知识与STL的相关用法。在这里仅对C++基本知识中一些易混知识进行整理分析。
2. 循环结构
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。
由循环体中的条件,判断继续执行该功能还是退出循环。
2.1. for循环
通常循环次数已知并且循环变量变化比较有规律时,采用的是for循环。
//示例代码
for(int i=0;i<100;i++){
cout<<"欢迎参加组队学习"<<endl;
}
使用for循环时,【循环变量赋初始值】,【循环条件】,【更新循环变量】这三个表达式都可以省略,变为for ( ; ; )
,这表示不用给循环变量赋初始值,也不用在每次执行后更新循环变量,同时循环的条件始终为真,也就是说每次都会选择进入循环体。
注意:
- 如果循环体只有一句话,不用大括号括起来不报错,但为了提高代码的可读性,建议加上大括号!
- 基础语法,for语句中若第二条为空,则该条件判断默认为1(真)。
- 在循环中如果需要累加,注意累加的变量大小是否够用,考虑用long long!
- return可以当循环完成任务后直接返回,减少循环次数。
2.2. 多重循环
多重循环嵌套适用于循环的大操作里有重复的小操作的情景。
//示例代码
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
cin>>matrix[i][j];
}
}
注意:
- 如果是for嵌for,内外层的循环变量(比如代码示例的i和j)需要用不一样的变量,否则容易产生混乱;
- 在嵌套操作中都需要使用缩进,以增强代码可读性;
- 可以通过多层嵌套遍历问题对应的所有方案(暴力法),但是有时候当太多层嵌套遇到大量测试数据的时候容易超时,需要引起注意!
- 在多层循环中, 一个break语句只向外跳一层;
3.计算循环次数
对于多重循环中各层循环次数已知的情况,我们可以将各层循环次数累乘起来。
对于各层循环次数相互关联的情况,我们需要掌握一些常用的递推关系式与数列求和的方法
如下是一些常用的求和结论:
总结
以上就是DataWhale的ACM组队学习中关于C++语法的部分整理,接下来将是数据结构与算法部分,喜欢的朋友可以点赞收藏关注。