1 / 14

浅谈程序设计学习方法与解题策略

浅谈程序设计学习方法与解题策略. F1003029 祁明良. 引言. 给出一个简单的问题,例如排序,能否在 40 分钟内解决?能否保证正确? 如果不能,为什么? 算法不熟悉? 代码不熟悉? 调试不出来? 特殊情况的一些点会出错?. 算法. 算法不熟悉,怎么办? 现阶段我们需要的算法不外乎这么寥寥几种: 1. 模拟 2. 搜索(递归,递推,回溯) 3. 贪心 4. 排序类算法 至于动态规划,图论等,可能花地时间相对长一些,对于起步的同学来说性价比没有上述的高。. 算法. 如何训练? 课堂( 30 ) + 自学( 70 ) 建议做专题训练

deana
Download Presentation

浅谈程序设计学习方法与解题策略

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 浅谈程序设计学习方法与解题策略 F1003029 祁明良

  2. 引言 • 给出一个简单的问题,例如排序,能否在40分钟内解决?能否保证正确? • 如果不能,为什么? • 算法不熟悉? • 代码不熟悉? • 调试不出来? • 特殊情况的一些点会出错?

  3. 算法 • 算法不熟悉,怎么办? • 现阶段我们需要的算法不外乎这么寥寥几种: • 1.模拟 • 2.搜索(递归,递推,回溯) • 3.贪心 • 4.排序类算法 • 至于动态规划,图论等,可能花地时间相对长一些,对于起步的同学来说性价比没有上述的高。

  4. 算法 • 如何训练? • 课堂(30) + 自学(70) • 建议做专题训练 • 资源来源:USACO(由于USACO的一些弊端,建议tyvj等有题型分类的在线测评系统) • 推荐网站:NOCOW(上面有USACO,sgu,Ural这些著名在线测评系统的题解和译题)

  5. 代码 • 敲代码,讲究的是 速度 & 准确率。 • 起步阶段刷简单题,练代码熟练度。 • 简单题的来源: • USACO(碰到难题无法前行怎么办?问度娘~) • Tyvj ,sgu等初级在线测评系统 • NOIP历届试题(起步就做普及组的吧) • 一个建议:可以尝试不使用visual studio,直接在记事本中编写。

  6. 调试 • 一个程序写完了,编译不通过,或者WA了 • 大一阶段貌似没有教如何调试程序……

  7. 调试

  8. 测试 • 测试数据的设计(在线测评系统的又一大弊端) • 设置测试数据的目的: • 我们希望设计这样的测试数据,它能系统的揭示不同类型的错误并且耗费最少的时间和工作量。 • 设置测试数据的一般选择: • 边界数据 • 最大数据 • 随机数据

  9. 解题策略 • 毕竟有一个东西名字叫做 机考… • 解题步骤: • 题目大意 • 数据结构分析 • 算法分析 • 调试 • 测试数据设计

  10. 题目大意 • 假设考试给你2个小时做3道题,如何分配时间?如何取舍? • 建议不要拿到试卷10分钟内直接开始敲键盘。 • 前30分钟用来把所有题目浏览一遍,整理出题目大意,难度。一些特殊的地方必须留意! • 比如:判重,输出方案数还是方案等等

  11. 数据结构分析 • 本题用什么数据结构? • 图?怎么保存?邻接矩阵?关联矩阵? • 数组?大小? • 树?深度?节点数? • 各种变量分别保存什么内容? • 建议:变量名凸显出意义 • 注意:memory limit:以USACO的16M为例基本可以把数组开到4000000左右的大小。 • 实际亲测把数组开打1000000左右visual studio无法运行??……

  12. 算法分析 • 解题的关键,只能靠平时的积累。 • 碰到比较难的题一时想不出正确的算法? • 先把最笨最简单的算法搞清楚 • 接下来就是如何改进 • 应试:选用“最笨”的可行的算法。 • 实在不行咱骗总也要骗点吧……. • 注意:time limit:无特殊说明一般是1s • 所以时间复杂度要在108以下

  13. 调试+测试数据设计 • 一般前面分析的比较全面的话20分钟都能编完一题 • 重点是一定要自己设计测试数据!

  14. 结尾语 • 抱团刷题是王道哦亲!

More Related