算法设计与分析第一章作业(代码规范 + 《数学之美》读后感)

软工2201杨涵宇 2022级 2024-01-12 09:17:07

编码规范

以下是根据Google C++ Style Guide写出的sample


 
  1. #include <iostream>

  2.  
  3. namespace my_namespace {

  4.  
  5. // Constants should be named with uppercase letters and underscores.

  6. const int MAX_COUNT = 100;

  7.  
  8. class MyClass {

  9. public:

  10. // Constructor should use member initialization list.

  11. MyClass(int value) : value_(value) {}

  12.  
  13. // Method names should be in lowercase with underscores.

  14. void print_value() const {

  15. std::cout << "Value: " << value_ << std::endl;

  16. }

  17.  
  18. private:

  19. int value_;

  20. };

  21.  
  22. } // namespace my_namespace

  23.  
  24. int main() {

  25. my_namespace::MyClass my_object(42);

  26. my_object.print_value();

  27.  
  28. return 0;

  29. }

  30.  

以下是一些常见的Google代码规范:

  1. 命名风格:

    • 变量名、函数名和参数名使用小写字母和下划线(例如:my_variable)。
    • 类名使用驼峰命名法(例如:MyClass)。
    • 常量名使用大写字母和下划线(例如:MAX_COUNT)。
  2. 头文件和包含:

    • 使用#include来包含必要的头文件。
    • 使用前置声明(forward declaration)来减少头文件的依赖。
    • 头文件应该有保护式的包含指令,以避免重复包含。
  3. 缩进和空格:

    • 使用空格进行缩进,而不是制表符。
    • 通常情况下,每个缩进级别使用2或4个空格。
  4. 注释:

    • 使用注释来解释代码的目的和实现细节。
    • 使用自然语言描述,避免使用过于技术化的术语。
    • 在代码中使用注释来提供重要的上下文和解释。
  5. 类和结构体:

    • 成员变量应该以_结尾(例如:my_variable_)。
    • 使用初始化列表来初始化成员变量。
    • 使用constconstexpr来标记不可修改的变量或常量。
  6. 函数和方法:

    • 使用小写字母和下划线来命名函数和方法(例如:calculate_total)。
    • 使用const来标记不修改成员变量的方法。
    • 在函数和方法之间使用空行进行逻辑分组。

这只是Google代码规范的一些常见规则,具体的规范内容参考Google C++ Style Guide (https://google.github.io/styleguide/cppguide.html)

《数学之美》读后感

吴军教授写的《数学之美》这本书我早在大一开学前的暑假就粗略读过,和他的作品《浪潮之巅》一样,这本书也是用生动形象的语言,结合行业里的实际案例,写出的一本深入浅出的科普书籍。
数学演化的过程其实就是不断从问题里提取本质的过程,经过几千年的演化变得更加抽象化、符号化。但是数学的作用远不止于此,生活中处处都有数学的存在,甚至说我们自然语言的起源以及生活方式都受着数学的支配。

...全文
43 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
第1章 数字图像与图像处理 1 1.1 数字图像相关概念 1 1.1.1 数字图像 1 1.1.2 图像处理 2 1.1.3  图像识别 2 1.1.4 图像理解 3 1.2 图像的获取、显示与表示 3 1.2.1 图像的获取 3 1.2.2 图像显示 4 1.2.3 图像表示 4 1.3 数字图像处理系统的基本组成结构 9 第2章 相关的图像处理技术 10 2.1  图像分割技术 10 2.1.1 阈值与图像分割 10 2.1.2 梯度与图像分割 11 2.1.3 边界提取与轮廓跟踪 11 2.1.4  Hough变换 12 2.1.5 区域增长 12 2.2 图像复原 12 2.2.1 数学模型 12 2.2.2 维纳滤波(Wiener Filtering) 13 2.3 图像的纹理分析技术 13 2.3.1 空间灰度层共现矩阵 14 2.3.2  纹理能量测量 16 2.3.3 纹理的结构分析方法和纹理梯度 18 2.3.4 纹理识别示例——云类自动识别 19 2.4 图像的形态学处理技术 20 2.4.1 基本概念 21 2.4.2 开运算和闭运算 22 2.4.3 击中、击不中、变换 (HMT-Hit Miss Transform) 23 2.4.4 边界和骨架(Boundary and Skeleton) 23 第 3章 指纹识别系统(上) 24 3.1 指纹识别的历史 24 3.2 指纹识别研究的现状 24 3.3 指纹识别系统的构成  25 3.3.1 指纹的录入 26 3.3.2 指纹图像增强 28 3.3.3 指纹识别的基本原理 29 3.3.4  系统问题 30 3.3.5 系统性能评估 31 3.3.6 一套指纹识别算法库的构成 32 3.4 指纹的粗分类与匹配 89 3.5  基于Matlab的指纹识别系统 92 3.5.1 主界面程序 93 3.5.2 指纹中心计算程序 115 3.5.3 计算有效区域 117 3.5.4 二维Gabor变换 118 3.5.5 归一化扇区 119 3.5.6 读取图像 120 3.5.7  旋转角度计算 121 第4章 指纹识别系统(下) 123 4.1 指纹图像的预处理 123 4.1.1 预处理概述  123 4.1.2 指纹质量评估 124 4.1.3 指纹图像分割 129 4.1.4 指纹图像增强 134 4.1.5  指纹图像二值化 135 4.1.6 指纹图像细化 136 4.1.7 相关预处理算法代码 139 4.2 指纹特征提取  177 4.2.1 指纹特征的表述 177 4.2.2 局部细节特征提取 180 4.2.3 特征提取算法代码 186 4.3  基于点模式的细节匹配 194 4.4 指纹识别的实际应用案例 204 4.4.1 指纹门禁系统 204 4.4.2 指纹考勤系统 205 4.5 指纹处理算法库测试程序 206 4.6 本章小结 218 第5章 数字水印技术 219 5.1  基本概念 219 5.1.1 水印技术的基本要求 219 5.1.2 数字水印算法基本思路 219 5.1.3 一些关键问题 220 5.2 水印应用现状分析 220 5.2.1 现有水印算法不适应版权保护 220 5.2.2 盲检测算法 222 5.2.3  盲检测算法的公证 222 5.2.4 数字水印系统的一般组成 223 5.3 基于DCT域的数字水印方案 223 5.3.1  离散余弦变换 223 5.3.2 Torus自同构映射 224 5.3.3 人眼视觉频率响应及DCT变换系数的选取 224 5.3.4  水印算法 226 5.4 基于扩频通信的水印算法 228 5.4.1 扩频通信原理 228 5.4.2 扩频通信在数字水印中的利用 229 5.4.3 加载强度的讨论 233 5.4.4 水印加载算法的实现 237 5.5 一个基于DCT域的实例  240 5.5.1 一些算法代码 240 5.5.2 加载水印 271 5.5.3 提取水印 275 5.5.4 水印算法评价 281 5.6 本章小结 294 第6章 条形码技术 295 6.1 常用的条码编码规则 295 6.1.1  条码的一般组成 295 6.1.2 条码的种类 296 6.1.3 EAN-13码的构造 296 6.2 一个简单的条形码打印系统 298 6.3 一维条形码的识别 312 6.3.1 硬件识别系统 312 6.3.2 预处理过程 312 6.3.3  译码过程 314 6.4 一维条形码识别系统实例 315 6.4.1 DIB.H位图存取头文件 316 6.4.2  DIB.CPP位图存取源程序 317 6.4.3 BARRECOG.H条码识别头文件 322 6.4.4 BARRECOG.CPP条码识别源程序 323 6.5 二维条形码介绍 337 6.5.1 PDF417符号的结构 338 6.5.2 簇及符号字符定义 338 6.5.3 层编码 339 6.5.4 模式结构 339 6.5.5 起始符和终止符 340 6.5.6  空白区 340 6.5.7 错误监测与纠正 340 6.6 二维条形码打印程序 340 6.6.1 PDF417LIB.H二维条形码库头文件 340 6.6.2 PDF417LIBIMP.H数据定义 342 6.6.3 PDF417LIB.C函数实现文件  353 6.6.4 PDF417.C主程序 377 6.7 本章小结 378 第7章 手势识别系统 379 7.1  立体测量 379 7.1.1 立体匹配法 379 7.1.2 立体视觉的原理 379 7.1.3 用立体视觉进行距离测量  381 7.2 用一台摄像头进行距离测量 382 7.2.1 摄像头正对前方 382 7.2.2 摄像头倾斜 383 7.2.3  一台摄像头测量距离 385 7.3 假想演奏系统的构成 387 7.3.1 系统概述 387 7.3.2 肤色提取 388 7.3.3  右手位置检测 390 7.3.4 摄像机的距离测量 391 7.3.5 音阶范围与音量范围 391 7.3.6 声音的表现方法 392 7.3.7 系统整体构成 393 7.4 程序代码 393 7.5 本章小结 432 第8章 印鉴鉴定系统 433 8.1 伪印鉴的制作及人工防伪技术 433 8.1.1 常用伪造印鉴的方法及其特征 433 8.1.2 真假印鉴印文的检验 435 8.2 印鉴图像的分离 435 8.2.1 封闭凸多边形图像提取的算法提出 436 8.2.2 封闭凸多边形图像的提取方法——种子扩散浮置实体算法 436 8.3 基于矩不变量的印鉴识别 439 8.4 基于Fourier描述符的印鉴识别方法 441 8.4.1 提取字符包络线 441 8.4.2 字符包络线的Fourier描述 442 8.5 基于边缘和模板匹配的印鉴识别 443 8.6 部分算法代码 446 8.6.1 背景去除(利用颜色) 446 8.6.2 基于矩不变量的代码 450 8.7 本章小结 455 第9章 光学字符识别技术(上) 456 9.1 概述 456 9.1.1 文字识别系统的构成 456 9.1.2 文字识别技术 457 9.1.3 印刷体汉字识别 459 9.1.4 存在的问题 461 9.2  预处理技术 461 9.2.1 二值化 462 9.2.2 版面分析 463 9.2.3 倾斜度校正 464 9.2.4  版面切分 467 9.2.5 行、字分割 467 9.2.6 细化和规范化 469 9.2.7 预处理算法代码示例 470 9.3  特征提取 537 9.3.1 概述 538 9.3.2 边缘跟踪 538 9.3.3 笔画的分类 540 9.3.4 笔画识别前的噪声处理 541 9.3.5 笔画方向码合并处理及笔画识别 542 9.3.6 笔画间特征量的定义及识别 543 9.3.7  整字匹配的距离准则 544 9.3.8 一些统计特征 545 第10章 光学字符识别技术(下) 549 10.1 分类与识别 549 10.1.1 判别器的选择 549 10.1.2 决策树的基本概念 550 10.1.3 决策树设计 552 10.1.4  节点分类器设计 555 10.1.5 多方案组合识别器 558 10.1.6 代码示例 560 10.2 后处理 623 10.3  OCR程序示例 639 10.4 本章小结 640

273

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧