- 博客(24)
- 收藏
- 关注
原创 Processing 学习笔记
setup & drawvoid setup();void draw();setup 函数只在程序开始时运行一次。 draw 函数为循环执行的绘图函数。坐标系Processing 中坐标系以左上角为原点,向右为 X 轴正方向,向下为 Y 轴正方向。所用单位长度通常为 1 像素。通常只在 setup 函数中使用的函数void size(width,...
2018-08-13 13:47:51
1095
原创 读书笔记:《C++ 编程规范——101条规则、准则与最佳实践》(3)编程风格
豆瓣链接:《C++ 编程规范——101条规则、准则与最佳实践》 一个人的常量可能是另一个人的变量。——Alan Prelis第 14 条:宁要编译、链接时错误,也不要运行时错误以下是一些静态检查的例子:编译时布尔条件如果有些布尔值可以在编译期获得并需要检查,可以用 static_assert 代替运行时检查的 assert 。编译时多态用 “模板”...
2018-07-07 19:04:58
286
原创 读书笔记:《C++ 编程规范——101条规则、准则与最佳实践》(2)设计风格
豆瓣链接:《C++ 编程规范——101条规则、准则与最佳实践》 复杂性啊,愚人对你视而不见,实干家受你所累。 有些人避而远之。唯智者能够善加消除。 ——Alan Perlis 我知道,但又忘记了 Hoare 的至理名言:不成熟的优化是程序设计中的万恶之源。——Donald Dnuth,The Errors of TeX依赖性管理是软件工程的一个基础...
2018-06-21 12:51:22
241
原创 关于 C# 编译器程序 csc.exe 的位置
C# 最舒服的开发环境当然是 Visual Studio,但如果要自己在命令行中编译 C# 源代码的话,就需要自己找到编译程序,即 csc.exe 的位置。就本人的开发环境而言,安装完 Visual Studio 2015 后,会有几个不同版本的 csc.exe,其中 C# 5.0 的 csc.exe 在C:\Windows\Microsoft.NET\Framework\v4.0.303...
2018-06-20 18:33:52
3964
原创 读书笔记:《C++ 编程规范——101条规则、准则与最佳实践》(1)【组织和策略问题】
豆瓣链接:《C++ 编程规范——101条规则、准则与最佳实践》 如果人们按照程序员编程的方式修建房屋,那么一只啄木鸟就能毁灭整个文明。——Gerald Weinberg第 0 条:不要拘泥于小节(哪些东西不应该标准化)以下的内容不应该进行强制规定,但应当在项目中保持一致。缩进的多少行的具体长度命名规范注释风格关于宏名宏(macro)最好都用大...
2018-06-20 11:22:30
279
原创 【P1010-幂次方】解题记录
原题点 这里这是一道简单的分治题,其分治的思路为:要输出 n 的二进制结果,先提取小于 n 的、最大的 2^m,输出 2^m 的二进制表示,再输出 n-2^m 的二进制表示。要求 m,可以直接找到 n 的高位 1,它的位数减一即为 m 。递归边界为 m 为 0 或 1,此时直接输出答案。注意如果 n-2^m 为 0,就不用输出了,若不是要先输出 “+” 再继续递归。代码:#include
2017-06-30 15:50:34
485
原创 【p1126-机器人搬重物】解题记录
原题点 这里这是一道非常经典的迷宫问题,同时考察了编程技巧和宽搜。题中有许多需要注意的地方:一个机器人占据四个格子,给出的起终点坐标都是其中左上角格子的坐标。可能机器人的初始位置的 4 个格子中就有障碍物,因此需要特判起点是否合法。这是最后一组数据的要点。机器人能前进两格的前提是它能前进一格。前进 3 格的前提是它能前进两格,因此不能仅判断终点位置是否有障碍,而是沿途经过的所有位置是否有障碍
2017-04-22 23:08:47
2290
原创 【p1141-01迷宫】解题记录
原题点 这里这是一道非常经典的宽度优先搜索习题,很适合练习 floodfill 的编写。需要注意的几点是:一个连通块里的各个点的答案相同,因此每一个连通块只需遍历一遍。读取数据一定不要读取单个字符,尽量以字符串的形式读取,再提取单个字符。#include <cstdio>#include <queue>#include <vector>using namespace std;const
2017-04-16 14:25:33
433
原创 宽度优先搜索
和递归不同,宽搜使用队列而非递归遍历元素。就搜索树来说,深搜适合度数小,深度大的树。宽搜适合度数大,深度小的树。对于类似棋盘搜索的情况宽搜更为适合。其伪代码模板如下:void BFS(origin: 源点){ var q: 队列, inq: 集合,保存入过队的点; q.push(origin); inq.insert(origin); while(q 不为空){
2017-04-16 14:15:34
352
原创 【p1443-马的遍历】解题记录
原题点 这里这是一道很适合练习宽度优先搜索的题目。关于宽度优先搜索,有几个知识点:与深搜不同,宽搜不用递归,而是用队列(queue)进行遍历,它每次从队首取出一个节点然后枚举与之相邻的点,将其中符合条件的点加入队列。如此反复,直到队列为空为止,所有符合要求的点都将被遍历,搜索结束。为了防止节点被重复遍历,需要有一个 visited 集合来记录每一个点是否已经访问。而一个符合条件的点在加入队列后
2017-04-15 22:22:44
422
原创 【p1032-子串变换】解题记录
原题点 这里这是一道经典的搜索问题,但是数据比较弱,直接用宽度优先搜索就能通过。简单地说,思路就是:把原字符串入队,并设该元素之前的变换次数为 0 。取出队首元素,如果队列为空,则没有答案,结束程序。如果该元素等于目标字符串,输出它的变换次数,结束程序。检查该元素之前是否出现过,如果是则不必重复搜索,返回第 2 步。检查该元素之前的变换次数是否达到 10 。是则不能再变换返回第 2 步。
2017-04-09 13:43:53
366
原创 算法竞赛知识点总结
快速幂 & 取模取模的基本原理: a∗bmodn=(amodn)∗(bmodn)modna*b \mod n = (a \mod n)*(b \mod n) \mod n大整数取模的方法: begin{align}abcd \mod n = & ((a*10+b)*10*c)*10+d \mod n \\ = & end{align}begin{
2017-04-08 11:07:39
583
原创 【p1219-八皇后】解题记录
题目链接题目本身没什么好说的,只是要用位压来加速,否则最后一个点会超时。#include <cstdio>#include <cstdlib>using namespace std;int size;const int MAX_SIZE= 100;long long filled_column, filled_main_diagonal, filled_vice_diag
2017-04-02 21:19:54
363
原创 【p1086-花生采摘】解题记录
原题点 这里这是一道简单模拟题,没涉及什么算法。只是需要自己建立一个地图坐标系的概念。通常程序中习惯把原点定位左上角,右边为 x 轴正方向,下边为 y 轴正方向。只要把地图想明白,程序就很简单了。代码:#include <cstdio>#include <queue>#include <cmath>using namespace std;int width, height, time, an
2017-02-24 17:52:26
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人