青少年编程知识记录 codecoming

C++ 中的常量

一、说明

常量和变量是相对的概念 —— 变量是 “能变化的量”,而常量就是一旦定义就固定不变、不能修改的值。



用生活里的例子类比,你就能秒懂为什么需要常量:本质是 “给固定不变的东西贴‘只读标签’,避免误改、保证数据一致性”,没有这玩意儿,关键的固定值容易被意外修改,导致程序出错。



例子 1:身份证号(固定唯一的核心数据)



【没有常量的情况】:如果把身份证号存在普通本子上(变量),不小心写错成别人的号码,去办业务就会出错;要是多人共用这个本子,还可能被其他人随意涂改。

【有常量的情况】:把身份证号印在身份证卡片上(常量),卡片上的号码无法修改,无论谁用、什么时候用,都是同一个正确的号码 —— 这就是常量的 “不可修改性”,保证核心固定数据不被篡改。

例子 2:教室的固定座位号(不可更改的标识)



【没有常量的情况】:学生随便改座位号,上课点名时 “3 号座位” 可能坐的是 8 号同学,秩序全乱。【有常量的情况】:座位号用刻字或固定贴纸(常量),不能随意涂改,老师点 3 号座位就一定能找到对应的同学 —— 常量就是程序里 “刻死” 的固定值,不会被意外修改。

例子 3:数学中的 π(固定不变的常量)



【没有常量的情况】:每次计算都手写 3.14,有时写成 3.1415,有时写成 3.1,计算结果偏差大。

【有常量的情况】:定义一个常量 PI=3.1415926,所有计算都用这个常量,不管算多少个圆的面积,π 的值都不变,结果精准。

核心总结:



生活里的“不可修改的标签 固定标识”(身份证号、座位号、π),对应程序里的 “常量”—— 没有它们,固定不变的核心数据容易被误改,导致程序逻辑混乱、结果出错;

有了常量,能保证固定值的唯一性和不可修改性,让程序更稳定。

标签: 常量const

作者:亿万年的星光 分类:C++目录 浏览:

最小生成树—Prim(普里姆)算法

一、算法概述

Prim 算法是一种用于求解加权无向连通图的最小生成树(MST) 的贪心算法。它从一个顶点开始,逐步扩展生成树,每次选择连接已选顶点集和未选顶点集的最小权重边。

二、算法思想

  1. 初始化:从任意顶点开始,将其加入生成树集合

  2. 重复执行

    • 在所有连接已选顶点和未选顶点的边中,选择权重最小的边

    • 将该边加入生成树,并将对应的未选顶点加入已选集合

  3. 终止条件:当所有顶点都加入生成树时结束

三、算法过程示例

示例图(顶点:A,B,C,D;边权重如图):

更清晰的邻接关系(无向图,权重如图):

  • A–B : 2

  • A–C : 4

  • A–D : 3

  • B–D : 1

  • C–D : 5

顶点集合:{A, B, C, D}

目标:用 Prim 算法找最小生成树(MST)

每次选择连接 已选顶点集 与 未选顶点集 的最小权重边,将该边及其另一端点加入已选集合。

步骤 1

  • 已选集合 S={A}

  • 候选边(一端在 S,一端不在 S):

    • A–B (2)   (说明:A在S中,B不在S中)

    • A–C (4)   (说明:A在S中,C不在S中)

    • A–D (3)   (说明:A在S中,D不在S中)

  • 最小权重边:A–B (2)

  • 加入 B 到 S,边 A–B 加入 MST。

MST 边:{A–B}

S = {A, B}





最小生成树—Kruskal(克鲁斯卡尔)算法

一、算法描述

在一个连通加权无向图中,找到一棵最小生成树。即,找到连接所有顶点的、权值总和最小的树,且树中不包含任何环。



二、核心思想

  1. 贪心策略:每次从未选择的边中,选取一条权值最小的边。

  2. 避免环路:如果加入这条边会导致生成树中形成环,则舍弃它。

  3. 集合管理:使用并查集数据结构来高效地判断两个顶点是否已经连通(即加入边是否会形成环)。



三、图解过程

假设我们有以下连通图 G,目标是找到它的最小生成树(MST)。

步骤 0:初始化

  • 将图中所有边按权值从小到大排序

  • 初始化一个空的边集 MST,用于存放最小生成树的边。

  • 初始化并查集,让每个顶点自成一個集合。

排序后的边列表:(A,D):5, (C,E):5, (D,F):6, (A,B):7, (B,E):7, (B,C):8, (E,F):8, (B,D):9, ...

当前 MST: { }并查集状态: {A}, {B}, {C}, {D}, {E}, {F}

最小生成树—基本概念

一、最小生成树核心概念1. 基本定义一个带权无向连通图的最小生成树,是指从该图中选择若干条边,构成一个包含图中所有顶点的树结构(无环、连通),且所有选中边的权值之和最小。2. 关键性质生成树的本质:包含图中全部n个顶点,且仅有n-1条边(保证无环且连通,增减一条边都会破坏树的性质)。最小性:所有可能的生成树中,边权总和是最小的。不唯一性:当图中存在多条相同权值的边时,可能存在多个不同结构但权值和相同的最小生成树。适用范围:仅适用于无向连通图(非连通图只能求最小生成森林,即每个连通分量的最小生成树

如何使用code::blocks编写C++代码

在前面的文章中,已经简单介绍了如何下载code::blocks了,这篇文章介绍一下如何使用code::blocks编写一个C++代码我们打开code::blocks软件,点击”New File“然后点击”Empty file“然后输入下面的代码#include<iostream> using namespace std; int main(){     cout<<"hello 
作者:亿万年的星光 分类:C++目录 浏览:

一笔画问题



【题目描述】

如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。

根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数。

【输入】

第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。

【输出】

欧拉路或欧拉回路,输出一条路径即可。

【输入样例】

5 5  1 2  2 3  3 4  4 5  5 1

【输出样例】

1 5 4 3 2 1

【提示】

【数据范围】

对于100%的数据:1 < n < 100,1 < m < 2000。



作者:亿万年的星光 分类:C++目录 浏览:

图的遍历



【题目描述】

给出  个点, 条边的有向图,对于每个点 ,求  表示从点  出发,能到达的编号最大的点。

【输入】

第  行  个整数 ,表示点数和边数。

接下来  行,每行  个整数 ,表示边 。点用  编号。

【输出】

一行  个整数 

【输入样例】

4 3  1 2  2 4  4 3

【输出样例】

4 4 3 4

【提示】

对于  的数据,

对于  的数据,



作者:亿万年的星光 分类:C++目录 浏览:

图的访问与遍历-广度优先搜索

对于无向图的广度优先搜索#include <iostream> #include <vector> #include <queue> using namespace std; // 广度优先遍历核心函数 void BFS(int start, const vector<vector<int>>& adjList
作者:亿万年的星光 分类:C++目录 浏览:

Code::Blocks下载安装教程



Code::Blocks 是一款免费、开源且跨平台的 C/C++ 集成开发环境。它支持 Windows、Linux 和 macOS 等多种操作系统,核心特点是轻量快速、纯专注于 C/C++ 开发,并内置了对多种编译器(如 GCC、MinGW、Clang)的支持,是初学者和学习 C/C++ 编程的常用工具之一。

官网地址:https://www.codeblocks.org/









一、下载

点击左侧的”Downloads“或者点击下载地址:  https://www.codeblocks.org/downloads/

如果上面的打不开,可以使用网盘下载:

codeblocks-25.03mingw-setup.exe: https://url47.ctfile.com/f/64055047-8513804238-913cef?p=7381 (访问密码: 7381)



点击”Download the binary release“

这里选择的版本是codebloscks-25.03mingw-setup.exe,然后点击Sourceforge.net进行下载



然后就会跳转到  https://sourceforge.net/projects/codeblocks/

就开始下载了,如果没有下载,可以点击左侧的”Download“

二、安装



下载后可以看到安装程序,双击运行。

双击后,点击”Next“按钮



这里点击”I Agree“

下一步点击”Next“

这里可以选择其他盘符,然后点击‘Install”

安装过程:

这里点击“Yes”



然后点击“Next”



这一步点击“Finish”

等待一段时间后就可以看到Code::Blocks运行了















作者:亿万年的星光 分类:C++目录 浏览:

DEVC++如何支持C++11

DEVC++默认开启C++11,需要手动添加C++11支持。DEVC++需要使用高一点的版本,DEVC++5.11下载地址:(1)  官方下载地址: Dev-C++ download | SourceForge.net(2)  网盘下载地址:(访问密码: 7381)https://url47.ctfile.com/f/64055047-8504055040-c524b3?p=7381 我们打开DevC++,新建一个C++代码,#include &
作者:亿万年的星光 分类:C++目录 浏览: