一、引论,《组合数学(第4版)》卢开澄 卢华明
零、前言
发现自己数数题做的很烂,重新学一遍组合数学吧。
参考卢开澄 卢华明 编著的《组合数学(第4版)》,只打算学前四章。
通过几个经典问题来了解组合数学所研究的内容。
一、幻方问题
据说大禹治水之前,河里冒出来一只乌龟,龟背上是一个3*3的矩阵,每个格子里面有若干点,行和列和对角线和都相等且为15。然后大禹就以15为周期来治水了。
对于一个nxn的矩阵,满足行和,列和,主副对角线和都相等,那么这个矩阵就是一个n阶幻方。
最早研究幻方的是南宋的杨辉(杨辉三角那个),他罗列了3x3、4x4、5x5甚至10x10的幻方。
定义:行/列整数和为该幻方的幻和。
n 阶幻方的幻和为 (n^2 + 1) * n / 2
并非任意阶幻方都有解法:
2阶幻方就不存在:

会推出某两个元素相等,但是a b c d 互不相同。
大约30年前,德国数学家L · Bieberbach证明:
对于任意大于等于 3 的数 n,都存在一个 n 阶的幻方阵。
杨辉提出了一种三阶幻方的构造方法:
- 123、456、789 斜着摆三列,得到一个菱形
- 交换菱形对角元素,挤压成一个正方形,就是一个三阶幻方
但是对于更高阶该如何构造呢?
法国一位数学家研究了奇数阶幻方的一般化构造方法:
- 记第 i 行 第 j 列 方格坐标为 (i, j),0 索引
- 初始将 1 放在第 0 行的中间 (0, n / 2)
- 对于 当前要放置的棋子,上一枚棋子的坐标为 (x, y)
- 我们尝试放在 ((x - 1) % n, (y + 1 % n))
- 如果已经被占用,则放在 ((x + 1) % n, y)
- 证明略
事实上,我们可以将幻方分成三类:
- 奇数阶幻方
- 4m 阶幻方
- 4m + 2 阶幻方
每一类都有对应的构造算法。
然而我们发现杨辉构造的三阶幻方和奇数阶构造算法得到的幻方不同,但是把幻方上下翻转就相同了。

这让我们思考,对于n阶幻方有多少种构造方法?
三阶幻方,如果认为翻转旋转一样的话,只有一种。
四阶幻方,如果认为翻转旋转一样的话,有880种,否则有7040.
五阶已经有 2亿七千多万个了。
六阶数学家大概确定了其数量落在某个范围,七阶已经无从得知了……
可见,计数问题是组合数学中的一大难题。
算竞中经常遇到这样一类构造题:行列乘积、gcd、异或等限制来构造矩阵,这其实都是幻方的变形。
二、羊皮纸卷
阿基米德在羊皮纸上的论文流落到寺庙,僧人清洗后重新抄写经文。
2003年,科学家通过X光照射,发现羊皮纸经文下面的阿基米德关于十四巧板的论文。

一位数学家以此为题,设置100美元奖项,谁先解出来给谁。
然后计算机学家借助计算机设计算法解出来是17152种,后来数学家利用排列组合的方式,也得到了正解。阿基米德无意间开创了西方世界的组合数学的篇章。
1666年,莱布尼茨研究概率学时,生造了**组合数学(Combinatorics)**这个单词。
三、手机密码安全吗
平时在学校基本都是翘课,有一次遇到学习通4位密码签到,我一看乐了,整个程序暴力枚举,几乎一瞬间就签上到了。
为什么这么快呢?
4位密码,每位10种可能,也就10000种,计算机基本几毫秒就能枚举完所有可能。
很多人手机都有3 * 3 的手势密码,其实手势密码可以看作是从一个格子出发得到的一条路径,我们怎么计数呢?
正难则反,总情况 - 不合法路径。
不合法的定义:如果选择的两个点连成的线段,穿越了第三个点,如果这第三个点,之前没有被连过,则不合法;反之,则合法
通过计算机程序得到一共有 389112 种方案。
可见,如果手机没有输入次数限制的话,一部手机很快就能被破解。
计数问题是一类很常见的问题,但是并不简单,如何做到不重不漏,是一个难点。
四、世界杯引出的问题
n 支球队参加比赛,一共需要多少场复赛?
比较笨的方法:局面抽象成节点,代表当前剩下的队伍集合,挑出两个队伍比赛,扔掉一个败者,得到新的节点,最后节点的数目就是总比赛场数。
但事实上,每进行一场比赛都会产生一个败者,一个胜者,我们最后只有一个冠军,所以要进行n - 1场比赛。
可见同样是计数问题,不同方法的效率是天差地别的。
五、哥尼斯堡七桥问题
即欧拉路径问题:欧拉图,欧拉通路,欧拉回路,Hierholzer算法详解-CSDN博客
沿着桥走,每个桥恰好走一次有多少种走法?
我们能直接取排列数作为答案吗?
显然不能,太多非法解了。
不过我们可以借助定理 + 计算机枚举来求解。
通过定理,我们保证枚举方案的合法性,可见有技巧的枚举可以更加精巧简洁。
相关文章:
一、引论,《组合数学(第4版)》卢开澄 卢华明
零、前言 发现自己数数题做的很烂,重新学一遍组合数学吧。 参考卢开澄 卢华明 编著的《组合数学(第4版)》,只打算学前四章。 通过几个经典问题来了解组合数学所研究的内容。 一、幻方问题 据说大禹治水之前,河里冒出来一只乌龟,…...
Vue3+TS 实现批量拖拽文件夹上传图片组件封装
1、html 代码: 代码中的表格引入了 vxe-table 插件 <Tag /> 是自己封装的说明组件 表格列表这块我使用了插槽来增加扩展性,可根据自己需求,在组件外部做调整 <template><div class"dragUpload"><el-dialo…...
二叉树的所有路径(力扣257)
因为题目要求路径是从上到下的,所以最好采用前序遍历。这样可以保证按从上到下的顺序将节点的值存入一个路径数组中。另外,此题还有一个难点就是如何求得所有路径。为了解决这个问题,我们需要用到回溯。回溯和递归不分家,每递归一…...
Python OrderedDict 实现 Least Recently used(LRU)缓存
OrderedDict 实现 Least Recently used(LRU)缓存 引言正文 引言 LRU 缓存是一种缓存替换策略,当缓存空间不足时,会移除最久未使用的数据以腾出空间存放新的数据。LRU 缓存的特点: 有限容量:缓存拥有固定的…...
LabVIEW项目中的工控机与普通电脑选择
工控机(Industrial PC)与普通电脑在硬件设计、性能要求、稳定性、环境适应性等方面存在显著差异。了解这些区别对于在LabVIEW项目中选择合适的硬件至关重要。下面将详细分析这两种设备的主要差异,并为LabVIEW项目中的选择提供指导。 硬件设…...
Ansys Speos | Speos Meshing 网格最佳实践
概述 网格划分是在各种计算应用中处理3D几何的基本步骤: 表面和体积:网格允许通过将复杂的表面和体积分解成更简单的几何元素(如三角形、四边形、四面体或六面体)来表示复杂的表面和体积。 模拟和渲染:网格是创建离散…...
elasticsearch segment数量对读写性能的影响
index.merge.policy.segments_per_tier 是一个配置选项,用于控制 Elasticsearch 中段(segment)合并策略的行为。它定义了在每一层的段合并过程中,允许存在的最大段数量。调整这个参数可以优化索引性能和资源使用。 假设你有一个索…...
全同态加密理论、生态现状与未来展望(中2)
《全同态加密理论、生态现状与未来展望》系列由lynndell2010gmail.com和mutourend2010gmail.com整理原创发布,分为上中下三个系列: 全同态加密理论、生态现状与未来展望(上):专注于介绍全同态加密理论知识。全同态加密…...
鸿蒙UI(ArkUI-方舟UI框架)-开发布局
返回主章节 → 鸿蒙UI(ArkUI-方舟UI框架) 开发布局 1、布局概述 1)布局结构 2)布局元素组成 3)如何选择布局 声明式UI提供了以下10种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。 …...
RPC是什么?和HTTP区别?
RPC 是什么?HTTP 是什么? 作为一个程序员,假设我们需要从A电脑的进程发送一段数据到B电脑的进程,我们一般会在代码中使用 Socket 进行编程。 此时,可选性一般就是 TCP 和 UDP 二选一,由于 TCP 可靠、UDP 不…...
Linux C\C++编程-建立文件和内存映射
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 Linu…...
行政纠错——pycorrector学习
pycorrector是一个开源中文文本纠错工具,它支持对中文文本进行音似、形似和语法错误的纠正。此工具是使用Python3进行开发的,并整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型来实现文本纠错功能。pycorrector官方仓库…...
Go的defer原理
Go 的 defer 原理 defer 是 Go 语言中的一个关键字,用于延迟执行一个函数调用。它通常用于处理资源释放、连接关闭等操作,确保这些操作在函数返回之前执行。 1. 什么是 defer? defer 关键字用于延迟执行一个函数调用,直到包含它…...
Windows 下本地 Docker RAGFlow 部署指南
Windows 下本地 Docker RAGFlow 部署指南 环境要求部署步骤1. 克隆代码仓库2. 配置 Docker 镜像加速(可选)3. 修改端口配置(可选)4. 启动服务5. 验证服务状态6. 访问服务7. 登录系统8. 配置模型8.1 使用 Ollama 本地模型8.2 使用在线 API 服务9. 开始使用10. 常见问题处理端…...
专题三_穷举vs暴搜vs深搜vs回溯vs剪枝_全排列
dfs解决 全排列&子集 1.全排列 link:46. 全排列 - 力扣(LeetCode) 全局变量回溯 code class Solution { public:vector<vector<int>> ans;vector<int> cur;vector<bool> used;vector<vector<int>> permute…...
【IEEE Fellow 主讲报告| EI检索稳定】第五届机器学习与智能系统工程国际学术会议(MLISE 2025)
重要信息 会议时间地点:2025年6月13-15日 中国深圳 会议官网:http://mlise.org EI Compendex/Scopus稳定检索 会议简介 第五届机器学习与智能系统工程国际学术会议将于6月13-15日在中国深圳隆重召开。本次会议旨在搭建一个顶尖的学术交流平台…...
华为E9000刀箱服务器监控指标解读
美信监控易内置了数千种常见设备监测器,能够监测超过20万项指标。这些指标涵盖了从硬件设备到软件系统,从网络性能到安全状态等各个方面。如下基于美信监控易——IT基础监控模块,对华为E9000刀箱服务器部分监控指标进行解读。 一、华为E9000…...
【LC】2544. 交替数字和
题目描述: 给你一个正整数 n 。n 中的每一位数字都会按下述规则分配一个符号: 最高有效位 上的数字分配到 正 号。剩余每位上数字的符号都与其相邻数字相反。 返回所有数字及其对应符号的和。 示例 1: 输入:n 521 输出&…...
QT QTreeWidget控件 全面详解
本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、…...
欧几里得算法求最小公倍数和最大公约数
一.最大公约数 gcd(a,b)gcd(b,a%b) 递归式,当且仅当b0,易得0和a的公约数为a.(可作为递归的出口) 证明: int gcd(int a, int b) {if (b 0) return a;else return gcd(b, a % b); } 二.最小公倍数 给定整数a b,求a b的最小公倍数 有图可知…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
【若依】框架项目部署笔记
参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…...
