沈阳市于洪区建设局网站cms 官网
2026/2/20 10:19:15 网站建设 项目流程
沈阳市于洪区建设局网站,cms 官网,上海做网站最好的公司,青岛 网站设计#x1f9e0; 判断题第 4 题1、#x1f4cc; 题目原文使用 math.h 或 cmath 头文件中的函数#xff0c;表达式 sqrt(4) 的结果类型为 double。✅ 判断结果#xff1a;正确#xff08;√#xff09;2、#x1f4d6; 故事讲解#xff1a;#xff08;1#xff09;#… 判断题第 4 题1、 题目原文使用math.h或cmath头文件中的函数表达式sqrt(4)的结果类型为double。✅ 判断结果正确√2、 故事讲解1‍♂️ 数学魔法师 sqrt在 C 王国里有一位数学魔法师名字叫sqrt他的任务是开平方2 举个最简单的例子sqrt(4)数学上我们知道答案是2但 C 会问一个问题❓“你这个 2是整数还是小数”3、 关键知识点1sqrt的真实身份sqrt是数学库函数它的规则是不管你传进去的是整数还是小数返回值一定是double小数2 小实验auto x sqrt(4);x的类型double值是2.0即使写成int a sqrt(4);也是先得到2.0再转换变成24、 记忆口诀sqrt 爱小数结果一定 double 判断题第 5 题1、 题目原文在杨辉三角形中第 n 行从 0 开始计数的所有数字之和等于2^n。✅ 判断结果正确√2、 故事讲解1 神奇的杨辉三角杨辉三角长这样从第 0 行开始第0行 1 第1行 1 1 第2行 1 2 1 第3行 1 3 3 12 我们来算一算“行的和”行号 n这一行加起来011 2⁰11 12 2¹21 2 14 2²31 3 3 18 2³完全符合3、 算法 数学原理展开 为什么一定是 2ⁿ杨辉三角每一行其实是(a b)^n 的展开系数而(a b)^n当我们令a 1, b 1就变成(1 1)^n 2^n4、 记忆口诀杨辉第 n 行加起来的和是 2的n次方 判断题第 6 题1、 题目原文使用二叉堆优化的 Dijkstra 最短路算法在某些特殊情况下时间复杂度不如朴素实现的。✅ 判断结果正确√2、 故事讲解1 与 的比赛我们有两位选手朴素 Dijkstra堆优化 Dijkstra2大家都以为 一定比 快对吧3⚠️不一定3、 先说结论工具更高级 ≠ 一定更快4、 两种 Dijkstra 的对比1 朴素版 Dijkstra每次用for循环找最小时间复杂度O(n²)代码简单图很稠密边很多时反而稳2 堆优化 Dijkstra用优先队列小根堆理论复杂度O((n m) log n)适合边少的图3⚠️ 为什么“有时更慢”在下面情况中点数很小或边特别多或频繁 push / pop 堆 堆操作反而成了“拖油瓶”5、 给小学生的口诀堆是好工具使用也要分情况点数小边特多真的就是不适合 判断题第 7 题 题目原文n 个不同元素依次入栈的出栈序列数与将 n 个不同元素划分成若干非空子集的方案数相等。❌ 判断结果错误×一、 故事讲解 第一件事入栈出栈有 n 个不同小朋友按顺序进栈1 → 2 → 3 → ... → n问 有多少种合法出栈顺序答案是一个著名的数卡特兰数Catalan Number二、 主角登场卡特兰数Catalan Number1、 卡特兰数的故事书包进出游戏1 游戏规则有n 个不同的小朋友他们按顺序排队进一个书包栈1 → 2 → 3 → ... → n规则只有两条1️⃣ 只能从包口进2️⃣ 只能从包口出2问有多少种“合法”的出包顺序2、 为什么“不是随便出”因为这是一个栈Stack后进去的必须先出来 这就像叠盘子 ️最上面的盘子先拿3、 例子n 3小朋友是1、2、3❌ 不合法的出栈顺序进1 2 3 出1 3 2 ❌原因3 在 2 上面不能让 2 先出来4、✅ 合法的出栈顺序一共5 种1 2 3 1 3 2 2 1 3 2 3 1 3 2 1这 5 就是卡特兰数 C₃5、 卡特兰数“管什么”只要你看到这些关键词栈进栈 / 出栈括号是否匹配左右孩子构成的二叉树先做 / 后做的合法顺序统统是卡特兰数在管卡特兰数 合法情况的数量6、 最小的几个卡特兰数n卡特兰数 Cₙ01112235414542 这串数就是卡特兰数列三、️ “搭积木”算卡特兰数递推思想1、 故事搭一座“左右两部分的城堡”用 n - 1 块积木 要搭一个左右两部分的城堡左边如果用 k 块k从0开始右边就用 n−1−k 块 左边有多少种 右边有多少种 一共有多少种2、 思想来了左边的可能数 × 右边的可能数再把所有情况加起来3、✨ 用一句话说计算方法Cₙ C₀×Cₙ₋₁ C₁×Cₙ₋₂ C₂×Cₙ₋₃ ... Cₙ₋₁×C₀ 这叫递推公式4、 参考程序#include iostream using namespace std; int main() { int N; cin N; // 用数组保存卡特兰数 // c[i] 表示第 i 个卡特兰数 long long c[35] {0}; // 基础情况 c[0] 1; c[1] 1; // 递推计算卡特兰数 for (int n 2; n N; n) { for (int i 0; i n; i) { c[n] c[i] * c[n - 1 - i]; } } // 输出结果 cout c[N] endl; return 0; }四、 偷偷告诉你一个“数学快捷公式”如果你能背的过考试也可以用这个Cₙ (1 / (n1)) × 组合数(2n, n)比如C₃ (1 / 4) × 20 5五、 第二位主角贝尔数Bell Number1、 贝尔数的故事分组游戏 游戏规则有n 个不同的小朋友老师要把他们分成若干组每一组不能为空不排顺序问 一共有多少种不同的分法2、 什么叫“不排顺序”下面两种{小红小明} | {小刚} {小刚} | {小红小明}是同一种分法 例子n 3小朋友是A、B、C所有分组方法1️⃣{A B C}2️⃣{A}{B C}3️⃣{B}{A C}4️⃣{C}{A B}5️⃣{A}{B}{C} 一共5 种 这就是贝尔数 B₃ 贝尔数“管什么”看到这些关键词就想到贝尔数分组划分集合不关心顺序每组不能为空3、 计算神器登场贝尔三角形Bell Triangle这是小学生最友好的贝尔数计算方法不需要懂复杂公式 1️⃣ 先搭一个三角形规则只有 3 条规则①第一行第一个数是 11规则②每一行的第一个数 上一行的最后一个数规则③后面的数 左边的数 左上角的数✨ 一步一步搭给你看第 0 行1 这是B₀ 1第 1 行第一个数 上一行最后一个 11 2B₁ 1第 2 行第一个数 上一行最后一个 22 3 5B₂ 2第 3 行第一个数 上一行最后一个 55 7 10 15B₃ 5第 4 行15 20 27 37 52B₄ 154、 发现规律了吗每一行的第一个数就是贝尔数5、 贝尔数前几项记住这张表就赢一半n贝尔数 Bₙ011122354155526203六 为什么这个三角形是对的1、‍‍‍ 每一行在干嘛一行代表“当前小朋友加入后”的所有可能变化左上角 老方案左边 新同学加入某一组的方式2、不断累加就把所有可能都算进来了 ✔️七、✅ 参考程序贝尔三角形法#include iostream #include vector using namespace std; int main() { int n; cout 请输入一个非负整数 n: ; cin n; if (n 0) { cout n 必须是非负整数 endl; return 0; } // 创建一个二维数组保存贝尔三角形 vectorvectorlong long bell(n 1, vectorlong long(n 1, 0)); // 初始化 bell[0][0] 1; // B0 1 // 构建贝尔三角形 for (int i 1; i n; i) { // 每行第一个数是上一行最后一个数 bell[i][0] bell[i-1][i-1]; // 后面的每个数是左上角 左边 for (int j 1; j i; j) { bell[i][j] bell[i-1][j-1] bell[i][j-1]; } } cout n 的贝尔数是: bell[n][0] endl; return 0; }八、 本题回顾算法问题对应数学入栈出栈序列卡特兰数划分子集贝尔数完全不是一类数十、 记忆口诀栈用卡特兰分组用贝尔数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询