当前位置: 首页 > news >正文

竞赛学习路线推荐(编程基础)

关于学习路线的推荐,总体上,分两步学习,第一步学习编程语言(C、C++、java),第二步是学习数据结构和算法

不少初学者会选择C语言或C++作为首选,笔者这里也推荐C或C++作为入门,需要注意的是,即便C++入门,也是C风格的学习,即不需要学习面向对象部分,还没有编程基础的同学建议先学习C语言入门

1 从Hello, World!开始学习输入输出

切记一定要刷题再往后学,没错,你没有看错,学了HelloWorld就可以做题,如1001题,我打赌你可能不会一次就通过!

2 变量与运算

了解变量定义,赋值,接收等操作,算数、关系、逻辑运算符等,从而可以实现各种数学运算,公式的计算等等

再看到任何数学公式类的问题都可以轻易解决。

3 分支、循环流程控制

学习switch、if else、while、do while、for等选择分支和循环结构,从而可以随意控制程序的走向。尤其可以灵活使用循环套循环,循环和选择结构嵌套组合的情形,应对复杂的问题处理。学到此,就几乎解锁了绝大部分的题目,建议学习完之后停留,预留大量的时间进行大量的刷题巩固

4 数组与结构体

数组的掌握可以让你更从容的处理更多的数据,尤其字符类型的数组,是绝大多数字符串问题解决的根本,这里尤其重点掌握,尤其掌握字符串(一维数组)、多个字符串(二维数组)的使用,及常用字符串函数的使用,这些可以让你轻松解决各种字符串问题,以及更方便的处理复杂问题。C语言学习同学要熟练学习string.h头文件下的str打头的各种字符串处理函数;对于C++学习的同学,则需要熟悉string类的常用方法,这些会让你如虎添翼。

同时,这里就可以学习冒泡、快速排序等基本排序算法了

结构体亦是如此,它和指针的将会是后面各种数据结构(链式结构、树等等)组成的基本。

5 函数与递归

函数定义、调用、返回值的使用是必须的。除此之外,调用本身就会产生新的算法,即递归

6.其他

笔者这里建议大家其他的知识,如宏定义、枚举以及一些语言特性,不需要专门的学习,通过刷题、敲代码的过程中需要什么学什么即可。

大家可以发现,在大致的语法学习过程中,我们就会不自觉的接触常用的算法和数据结构,比如排序算法、递归算法,简单的模拟、遍历的算法。数组这种顺序结构,用数组存储部分结果,以空间换时间等思想就会慢慢积攒下来,这都是刷题的结果。因此极力的建议大家不要太着急学习高级的算法和数据结构,因为没有前面介绍的那些东西做基础,以及没有足够的刷题量,许多算法和数据结构的思想你很难理解消化。反而会拉长时间。

别忘了,你面对的是上机编码解决问题的竞赛!

http://www.lryc.cn/news/469399.html

相关文章:

  • webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建
  • 利用Pix4D和ArcGIS计算植被盖度
  • 用docker Desktop 下载使用thingsboard/tb-gateway
  • 从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
  • 项目集群部署定时任务重复执行......怎么解决???
  • 使用JUC包的AtomicXxxFieldUpdater实现更新的原子性
  • vue3组件通信--props
  • leetcode-75-颜色分类
  • 【嵌入式原理设计】实验三:带报警功能的数字电压表设计
  • C#中的接口的使用
  • 记一次真实项目的性能问题诊断、优化(阿里云redis分片带宽限制问题)过程
  • LeetCode - 4. 寻找两个正序数组的中位数
  • 算法设计与分析——动态规划
  • 【实战篇】GEO是什么?还可以定义新的数据类型吗?
  • SpringBoot最佳实践之 - 项目中统一记录正常和异常日志
  • 【Flutter】状态管理:高级状态管理 (Riverpod, BLoC)
  • OAK相机的RGB-D彩色相机去畸变做对齐
  • smartctl硬盘检查工具
  • 清空MySQL数据表
  • 2024年妈杯MathorCup大数据竞赛A题超详细解题思路
  • Kafka系列之:Kafka集群磁盘条带划分和Kafka集群磁盘扩容详细方案
  • 【LeetCode】修炼之路-0007- Reverse Integer (整数反转)【python】
  • 【Flutter】页面布局:线性布局(Row 和 Column)
  • C语言巨难题:执行操作可获得的最大总奖励 I(C语言版)
  • 【力扣】GO解决子序列相关问题
  • Ubuntu20.04安装VM tools并实现主机和虚拟机之间文件夹共享
  • Linux 学习笔记(十七)—— 文件系统
  • 【计算机网络 - 基础问题】每日 3 题(五十八)
  • Netty入门基础:IO模型中BIO\NIO概念及区别【附演示代码】
  • vue2 使用环境变量