Files
fzu-product/.vitepress/dist/assets/技术资源汇总(杭电支持版)_3.编程思维体系构建_3.2算法杂谈.md.Dyuzf5Rm.js

2 lines
6.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as a,c as e,o as r,a4 as t}from"./chunks/framework.DtvhUNIn.js";const f=JSON.parse('{"title":"3.2 算法杂谈","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.2算法杂谈.md","filePath":"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.2算法杂谈.md"}'),o={name:"技术资源汇总(杭电支持版)/3.编程思维体系构建/3.2算法杂谈.md"},c=t('<h1 id="_3-2-算法杂谈" tabindex="-1">3.2 算法杂谈 <a class="header-anchor" href="#_3-2-算法杂谈" aria-label="Permalink to &quot;3.2 算法杂谈&quot;"></a></h1><h2 id="学计算机要先学算法吗" tabindex="-1">学计算机要先学算法吗? <a class="header-anchor" href="#学计算机要先学算法吗" aria-label="Permalink to &quot;学计算机要先学算法吗?&quot;"></a></h2><p>也许有的同学在高中阶段接触过信息学奥赛,那么也许你已经对基础的算法知识已经有了一定的了解。</p><p>那么对于没有接触过算法的同学来说呢?也许你们听过 Niklaus Emil Wirth 的一句话:“程序=算法 + 数据结构。”可能有的同学这个时候就要说了:“你看算法多重要,你没有算法就没有程序!”但这句话中的算法并不是你们所理解的狭义的“算法”。</p><p>广义上来说,“算法”可以被理解为是一组解决特定问题的有序步骤,它在描述一个“流程”,诸如做菜的流程、排课表都可以被认为是一种算法。利用计算机逻辑解决问题才是算法的核心。</p><p>学习算法的基础是拥有最基本的计算机素养,你需要优先学习一些基本的计算机概念、编程语言、简单的数据结构(数组、链表等),这些基本知识是你能够灵活利用算法的基础。</p><h2 id="学了算法就相当于学好了计算机吗" tabindex="-1">学了算法就相当于学好了计算机吗? <a class="header-anchor" href="#学了算法就相当于学好了计算机吗" aria-label="Permalink to &quot;学了算法就相当于学好了计算机吗?&quot;"></a></h2><p>学好了算法当然不等于学好了计算机科学。计算机科学是一个非常庞大的知识体系,包括更为底层的计算机组成原理、编译原理等,更为表层的 AI开发等是一门综合性学科。总的来说算法是计算机科学中较为重要的一部分但<strong>远远</strong>不是全部。</p><h2 id="学算法就要用《算法导论》一类的书吗" tabindex="-1">学算法就要用《算法导论》一类的书吗? <a class="header-anchor" href="#学算法就要用《算法导论》一类的书吗" aria-label="Permalink to &quot;学算法就要用《算法导论》一类的书吗?&quot;"></a></h2><p>我的答案是否定的。它更适合作为“工具书”(就像你英语的词典那样),而不是一本适合新生入门学习的书。可以使用《我的第一本算法书》一类的更为基础更为有趣的算法内容。相比于完全严谨的逻辑推导,初学者的诉求是在&quot;看得见,摸得着的例子和环境下探索和吸收新概念&quot;. 像这样的大部头可以在之后进行阅读。</p><h2 id="学算法一定要用-c-语言吗-不用-c-语言可以吗" tabindex="-1">学算法一定要用 C 语言吗?不用 C 语言可以吗? <a class="header-anchor" href="#学算法一定要用-c-语言吗-不用-c-语言可以吗" aria-label="Permalink to &quot;学算法一定要用 C 语言吗?不用 C 语言可以吗?&quot;"></a></h2><p>不一定要用 C 语言。但是 C 语言作为一种贴近底层面向过程语言,对日后学习其他的语言会有较大的帮助。你也可以先学习 Python、JAVA 等等。学校的课程仅仅是教授一些比较基础的知识,如果想要真正掌握一门语言,需要在学校课程的基础上更进一大大大步。</p><h2 id="acm-怎么说" tabindex="-1">ACM 怎么说? <a class="header-anchor" href="#acm-怎么说" aria-label="Permalink to &quot;ACM 怎么说?&quot;"></a></h2><p>前情提要,请尽量不要以功利的心态去参加 ACM你想要的与你能得到的可能存在过大落差</p><p>ACM 是美国计算机协会Association for Computing Machinery的缩写原先是 ICPC国际大学生程序设计竞赛的赞助商2018 年后不再赞助),在国内与 ICPC 齐名的比赛还有 CCPC中国大学生程序设计竞赛。</p><p>但常说的“ACM”一般泛指一切采用 ACM 赛制(给定一定数量的题目,采用罚时制,通过相同题目数量的选手依据罚时决定排名)的程序设计竞赛。</p><p>在我校,参加 ACM 社团姑且叫做社团并不代表能够参加有含金量的团体赛ICPC、CCPC 等)。你需要先参加由我校教练刘春英老师组织的各种比赛,有资格进入集训队后,才有机会代表学校参加比赛(当然不限名额的个人赛想参加就参加)。</p><p>进入集训队后采取末位淘汰制度(最后留下来的人在 20 人左右),最后留下来的人才有机会参加比赛。<strong>因此个人并不推荐 0 基础的同学对于 ACM 过于执着</strong>,有 0 基础的同学最后进入校队的例子,不过这通常意味着你一天至少得刷一道算法题。如果还是想尝试的同学,可以去洛谷 (<a href="http://www.luogu.com.cn" target="_blank" rel="noreferrer">www.luogu.com.cn</a>)、Codeforces(<a href="http://www.codeforces.com" target="_blank" rel="noreferrer">www.codeforces.com</a>)、Atcoder(<a href="https://atcoder.jp/" target="_blank" rel="noreferrer">atcoder.jp</a>) 等平台上注册账号,练习题目,参加这些网站定期组织的一些比赛。</p><p>如果经过一段时间的练习能够在 Codefoces<a href="http://www.codeforces.com" target="_blank" rel="noreferrer">www.codeforces.com</a>)上达到 1400 以上的 Rating那么可以再观望观望参与 ACM。</p>',19),n=[c];function h(s,i,l,p,d,_){return r(),e("div",null,n)}const m=a(o,[["render",h]]);export{f as __pageData,m as default};