摘要:点击我跳转末尾获取粉丝专属算法和数据结构源码。来看第一个语言程序我的第一个程序这段代码只做了一件事情,就是向屏幕上输出一行字。是一个头文件标准输入输出头文件是一个预处理命令,用来引入头文件。作为函数的返回值。
看到太多爆肝熬夜整合的内容,又是几万字,又是爆肝,我也来试试看能不能扛得住。试完后发现,果然还是扛不住啊。但是既然整理完了,那就把我的 算法学习路线 发出来吧,我把整个算法学习的阶段总结成了五个步骤,分别为: 「 基础语法 」、 「 语法练习 」、 「 数据结构 」、 「 算法入门 」、 「 算法进阶 」。本文梳理了这五个大项的思维导图,在下文会有详细介绍。
希望各位能够找到自己的定位,通过自己的努力在算法这条路上越走越远。
刚开始切勿心浮气躁,说一定要把这么多东西都学会。就算你的精力旺盛,日夜操劳,时间也是有限的。所以,首先是明确我们要做什么,然后制定好一个合理的 「 目标 」 ,然后再将目标进行逐渐拆解,再一点一点将要学习的内容逐步付诸实践才是最重要的。
点击我跳转末尾 获取 粉丝专属 《算法和数据结构》源码。
算法是以编程语言为基础的,所以选择一门编程语言来学习是必须的。因为作者本身是C/C++技术栈的,所以就拿C语言来举例子吧。如果是 Java、Python 技术栈,可以跳过 C语言相关的内容。这一小节,先给出学习路线图,然后我再来讲,每部分应该如何去学。
无论是 Java、Python、C/C++,想要上手一门语言,第一步一定是 HelloWorld,先不要急着去配环境。如果环境配了几个小时,可能一开始的雄心壮志就被配环境的过程消磨殆尽,更加不要谈日后的丰功伟业了。来看第一个 C 语言程序:
#include // (1)int main() // (2){ /* 我的第一个 C 程序 */ // (3) printf("Hello, World! /n"); // (4) return 0; // (5)}
这段代码只做了一件事情,就是向屏幕上输出一行字:
Hello, World!
。
( 1 ) (1) (1)stdio.h
是一个头文件 (标准输入输出头文件) ,#include
是一个预处理命令,用来引入头文件。当编译器遇到printf()
函数时,如果没有找到stdio.h
头文件,就会发生编译错误。
( 2 ) (2) (2)main()
作为这个程序的入口函数,代码都是从这个函数开始执行的。
( 3 ) (3) (3) 被/*
和*/
包围起来的代表注释,是给人看到,不进行代码的解析和执行。
( 4 ) (4) (4)printf
代表将内容输出到控制台上。其中/n
代表换行符。
( 5 ) (5) (5) 作为函数的返回值。
所以,我们需要让这件事情从一开始就变得 有趣,这样才能坚持下去。比如找一个相对较为有趣的教程,这里我会推荐这个:《光天化日学C语言》。听名字就比较搞笑,可能作者本身也不是什么正经人,哈哈哈!虽然不能作为一个严谨的教程去学,起码可以对搞笑的内容先产生兴趣。从而对于语言本身有学习下去的动力。
刚才提到的这个系列,可以先收藏起来。回头再去看,它讲述的是 对白式 的 C语言教学,从最简单的输出 HelloWorld 这个字符串开始讲起,逐渐让读者产生对C语言的兴趣。这个系列的作者是前 WorldFinal 退役选手,一直致力于 将困难的问题讲明白 。我看了他的大部分教程,基本都能一遍看懂。
然后,我们大致看下你选择的教程的前几个章节,那些标题是否有你认知以外的名词出现,比如以这个思维导图为例,前几个章节为:
1、第一个C语言程序
2、搭建本地环境
3、变量
4、标准输出
5、标准输入
6、进制转换入门
7、ASCII字符
8、常量
如果你觉得这些名词中有 五六个是没有什么概念的。那么,可能需要补齐一些数学、计算机方面的基础知识。反之,我们就可以继续下一步了。
只要对一件事情养成习惯以后,你就会发现,再难的事情,都只是一点一点积累的过程。重要的是,每天学习的过程一定要吃透,养成主动思考的好习惯。因为,越到后面肯定是越难的,如果前期不养成习惯,后面很可能心有余而力不足。
就像刷题,一旦不会做就去找解题报告,最后就养成了看解题报告才会做题的习惯。当然这也是一种习惯,只不过不是一种好习惯罢了。
光看教程肯定是不行的,写代码肯定还是要动手的,因为有些语法你看一遍,必定忘记。但是写了几遍,永世难忘。这或许就是写代码的魅力所在吧。所以,记得多写代码实践。
每天把教程上的内容,自己在键盘上敲一遍,坚持一天,两天,三天。你会发现,第四天就变成了习惯。所以坚持就是今天做了这件事情,明天继续做。
然而,就算再有趣的教程,看多了都会乏味,这是人性决定的,你我都逃不了。能够让你坚持下去的只有你自己,这时候,适当给予自己一些正反馈就显得尤为重要。比如,可以用一张表格将自己的学习计划记录下来,然后每天都去分析一下自己的数据。
当然,你也可以和我一样,创建一个博客,然后每天更新博文,就算没有内容,也坚持日更,久而久之,你会发现,下笔如有神,键盘任我行!更新的内容,可以是自己的学习笔记,心路历程 等等。
看着每天的粉丝量呈指数级增长,这是全网对你的认可,应该没有什么会是比这个更好的正反馈了。
那么,至此,不知道屏幕前的你感想如何,反正正在打字的我已经激情澎湃了。已经全然忘记这一章是要讲C语言基础的了!
介于篇幅,我会把C语言基础的内容,放在这个专栏 《光天化日学C语言》 里面去讲,一天更新一篇,对啊,既然说了要坚持,要养成习惯,我当然也要做到啦~如果你学到了哪一章,可以在评论区评论 “打卡” ,也算是一种全网见证嘛!
我也很希望大家的学习速度能够超越我的更新速度。
学习的过程中,做题当然也是免不了的,还是应征那句话:实践是检验真理的唯一标准。
而这里的题库,是我花了大量时间,搜罗了网上各大C语言教程里的例题,总结出来的思维导图,可以先大致看一眼:
从数学基础、输入输出、数据类型、循环、数组、指针、函数、位运算、结构体、排序 等几个方面,总结出的具有概括性的例题 100 道 《C语言入门100例》。
先输入一个 t t t,然后输入 t t t 组数据,对于每组数据,输入两个整数 a a a 和 b b b,如果 a a a 能够被 b b b 整除,则输出
YES
,否则输出NO
。
难度:?⚪⚪⚪⚪
首先,当 b b b 等于 0 时, a a a 是一定不能被 b b b 整除的;然后,就是看 a a a 除上 b b b 的余数是不是零了,这步运算在C语言中表示为a % b
;
#include int main() { int a, b, t; scanf("%d", &t); // (1) while (t--) { // (2) scanf("%d %d", &a, &b); if (b == 0 || a % b) // (3) printf("NO/n"); else printf("YES/n"); } return 0;}
while(t--)
等价于while(t-- != 0)
,当 t = 0 t=0 t=0 的情况下,这个循环就会结束,也就是说整个循环会执行一开始输入的那个t
的次数;||
(或)对两种情况输出 N O NO NO,一种是 b
等于0,另一个中是 a % b
不等于0;#include int main() { int a, b, t; scanf("%d", &t); while (t--) { scanf("%d %d", &a, &b); printf("%s/n", (b == 0 || a % b) ? "NO" : "YES"); // (1) } return 0;}
?:
来实现if else
语句的功能;循环输入。每组数据先输入 n ( n ≤ 10000 ) n(n /le 10000) n(n≤10000),再输入 n n n 个正整数 a i ( a i ≤ 10000 ) a_i(a_i /le 10000) ai(ai≤10000),输出其中最大的数。当没有任何输入时,程序结束。
难度:?⚪⚪⚪⚪
这个问题的经典思路就是枚举问题,以第一个元素为初始最大值,然后不断和第二个数、第三个数、…、第 n n n 个数进行比较,过程中将最大值存下来,最后输出这个最大值即可。
#include int max(int a, int b) { return a > b ? a : b; // (1)}int main() { int n, a, i, maxv; while(scanf("%d", &n) != EOF) { for(i = 0; i < n; ++i) { scanf("%d", &a); if(i == 0) { // (2) maxv = a; } maxv = max(a, maxv); // (3) } printf("%d/n", maxv); } return 0;}
maxv
中,当输入第一个数的时候因为没有比较,所以我们把第一个输入的数直接赋值给它;a
,和maxv
比大小,迭代求最大值; 由于这个专栏是付费专栏,可能对学生党不是很友好,所以作者经过再三思考,打算放出 300 张 7 折优惠券, 先到先得。只要拿这个图片来找作者即可享受,仅限前 300 名。
为了适当提高一定门槛,你至少需要学会如何下载图片或者截图并且发送到微信里 ?。
《C语言入门100例》上的例题,如果能理解前面 35 道,那基本C语言的学习就可以告一段落了,接下来就要开始我们的数据结构的学习了。
计算机存储、组织数据的方式。相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。往往同高效的检索算法和索引技术有关。
更多内容请收看:画解树。
为了增加阅读体验,更多内容请收看:画解二叉树。
为了增加阅读体验,更多内容请收看:画解堆。
本文已超五万字,为了增加阅读体验,更多内容请收看:画解二叉平衡树。
为了增加阅读体验,更多内容请收看:画解线段树。
为了增加阅读体验,更多内容请收看:画解字典树。
为了增加阅读体验,更多内容请收看:画解霍夫曼树。
为了增加阅读体验,更多内容请收看:画解并查集。
本文已超五万字,为了增加阅读体验,更多内容请收看:画解图。
为了增加阅读体验,更多内容请收看:画解二分匹配。
为了增加阅读体验,更多内容请收看:画解最短路。
为了增加阅读体验,更多内容请收看:画解最小生成树。
为了增加阅读体验,更多内容请收看:画解强连通。
这个系列主要分为以下几个大块内容:
1)图论
2)动态规划
3)计算几何
4)数论
5)字符串匹配
6)高级数据结构(课本上学不到的)
7)杂项算法
0 -> 1 -> 3 -> 4 -> 5 -> 2 -> 6
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121643.html
摘要:自制力好的人,估计在保存后会翻出来看两眼,过几天又忘得一干二净了。多思考学会思考,养成多思考的习惯。以项目来驱动自己学习,整个过程将会有趣得多。后语以上就是我对自学的几点建议,希望对你们有帮助。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 showImg(https://segmentfault.com/img/remote/1460000018208...
摘要:对于自学前端者如果没有合适的引导,学习的正确性及自我鼓励很容易陷入全过程的迷茫以及没信心。合理的方法,正确的心态,努力的学习,正确的指引,完全可以在三个月内完成前端的高姿态入门,高工资从业加油 对于前端入行现在大概有这么几种:1.大学里修前端课程,2.查资料看视频自学前端,3.参加前端培训。 对于这三种学习方式,自学前端是属于最难的一种,咱们先简单的说一下另外两种方式,然后我再着重说下...
摘要:在优衣库累死累活干了个月,钱不多而且也没什么前途,日子可以说是过的浑浑噩噩,本该奋斗学习的年纪,我的生活却如此颓废,所以下定决心要找其他出路。年成长之路走来的分享年时间,从优衣库导购到现在的测试工程师。 ...
摘要:李寻欢是风云第一刀书中第一高帅富。设计规范也将详细规定何时何地使用何种控件,并提供详细视觉设计稿,以便开发人员准确理解,避免歧义。而就在不久前,官宣停止对这个版本的维护,因此这个版本已经正式退出历史舞台。 Jerry: 我和周帅认识不久,自去年7月SAP成都研究院Cloud for Customer(以下简称为C4C)开发团队组建至今,根据这段时间和周帅愉快的合作经历,我觉得如果把周帅...
摘要:李寻欢是风云第一刀书中第一高帅富。设计规范也将详细规定何时何地使用何种控件,并提供详细视觉设计稿,以便开发人员准确理解,避免歧义。而就在不久前,官宣停止对这个版本的维护,因此这个版本已经正式退出历史舞台。 Jerry: 我和周帅认识不久,自去年7月SAP成都研究院Cloud for Customer(以下简称为C4C)开发团队组建至今,根据这段时间和周帅愉快的合作经历,我觉得如果把周帅...
阅读 1494·2021-11-18 10:02
阅读 2057·2021-11-15 11:38
阅读 1961·2021-09-30 09:47
阅读 2556·2019-08-30 15:52
阅读 2060·2019-08-29 14:04
阅读 3130·2019-08-29 12:29
阅读 1996·2019-08-26 11:44
阅读 852·2019-08-26 10:28