本文是《挑战程序设计竞赛》中线段树一节的读书笔记。主要介绍了线段树和RMQ(range minimun query)的原理和实现。
写跨平台C语言代码的十个规则
翻译了一篇关于写跨平台C语言代码的文章,介绍了10个相关规则。Rule #1: 同时开发 – 不要先开发后移植。不要把迁移工作外包。Rule #3: 使用标准C类型,不要使用特定于平台的类型。Rule #4: 只使用内置的 #ifdef 编译标志,不要自己发明轮子。 Rule #5: 开发一个简单的可重用的跨平台的基础库,来隐藏每个平台的代码。Rule 6#: 在所有的API中都使用Unicode(特别是UTF-8)。Rule #7: 不要使用第三方应用程序框架或者运行时环境来是你的代码跨平台。Rule #8: 原生代码本来就总是可以所有平台上编译->不是某个脚本让它们从不能编译变得能够编译了。 Rule #9:所有的程序都能在所有的平台编译。Rule #10:开除那些懒惰、不称职、态度差、不遵循这些规则的程序员。
11个Visual Studio调试技巧(译)
调试是开发环节的主要部分之一。对于一个非玩具型的程序,调试有时候会比较有难度,有时候会让人迷惑,有时候又很恼人。近几年的调试工具已经让调试任务变得更加简单省时。本文总结了11个在Visual Studio调试时比较有用的技巧,使用它们能帮你省下很多时间。这11个调试技巧是:悬停鼠标查看表达式的值,调试时改变变量的值,设置下一条要执行的语句,编辑并继续,一个方便的监视窗口,注释汇编,带有栈的线程窗口,条件断点,内存窗口,跳转到定义,命令窗口。
Visual Studio中的断点:命中计数 调用堆栈函数 条件断点
断点:在VS 调试器中使用命中计数,调用堆栈函数,条件来在某时某位置停下来。主要内容:在任意位置停下,设置断点,使用断点的高级功能,使用代码表达式来设置断点条件,使用设备/进程/线程等来设置断点条件,数据断点,使用追踪点打印到输出窗口等。
Visual Studio调试基本过程
最近因为工作需要,正在了解VS。在网上找了一些不错的介绍VS调试的文章,翻译整理成文。本文介绍Visual Studio调试基本过程。包括如下内容:Just My Code; Start, Break, Step, Run through Code, and Stop Debugging in Visual Studio;Attach to a process;使用断点和Break All(全部中断)来中断代码;Step into/over/out;运行到一个特定位置或特定函数;设置下一条要执行的语句;进入系统调用;停止调试。
《挑战程序设计竞赛》读书笔记(五)尺取法
《挑战程序设计竞赛》读书笔记(五)尺取法。本文介绍了尺取法。针对尺取法的思想,扩展介绍了双指针这种比较通用的方法,并给出了几个例子和对应的解法。
《挑战程序设计竞赛》读书笔记(四)格点问题的证明
《挑战程序设计竞赛》2.6节第一道题中讲解了求线段上格点个数的问题,该解答给出了结果,但中间过程省略了不少内容。本文补充了相关的证明和解释。
问题描述如下:
格点是指平面坐标系中,横纵坐标都是整数的点。给定平面上两个格点,P1(x1,y1),P2(x2,y2),则线段P1P2上除了P1和P2外,有几个格点?事实上,该问题答案为|x2-x1|和|y2-y1|的最大公约数减1,并给出了一个图示。本文对该结论给出了证明。
《挑战程序设计竞赛》读书笔记(三)图算法 图搜索 最短路 最小生成树
本文是《挑战程序设计竞赛》读书笔记的第三篇,主要涉及图算法,图的搜索,单源最短路和所有点对的最短路Floyd算法,最小生成树算法。文中解释了Roadblocks问题:求出图中指定的起点s和终点e之间次短路(第二短的路径);Conscription招兵问题。
《挑战程序设计竞赛》读书笔记(二)贪心算法 动态规划
本文阅读了《挑战程序设计竞赛》一书的第二章节,做了读书笔记,主要涉及贪心算法和动态规划,包括区间调度问题,01背包的动态规划解法,最长公共子串LCS问题。
深度优先搜索求解青蛙交换位置小游戏
用DFS搜索算法求解青蛙交换位置游戏。详细描述了算法的步骤和代码结构,包括描述状态的表示,获取后续状态,执行递归的DFS搜索。该方法具有很强的通用性。