avatar
文章
20
标签
9
分类
2

主页
标签
归档
版权声明
关于
whystars
搜索
主页
标签
归档
版权声明
关于

whystars

L8.5 - 数学专题:杨辉三角的编程妙用(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8.5 - 数学专题:杨辉三角的编程妙用(拓展) 一、杨辉三角是什么? 1. 数字金字塔 外观特点: 每一行数字左右对称,像金字塔一样逐层增加 第n行有n个数字,首尾都是1,中间数字=上层两数之和 示例(前5行): 12345 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 二、用C++生成杨辉三角 1. 二维数组生成法 1234567891011121314151617181920212223242526#include <iostream>#include <vector>using namespace std;vector<vector<int>> generatePascal(int n) { vector<vector<int>> triangle(n); for(int i=0; i<n; i++) { triangle[i].resize(i+1, 1); // 每行初始化为1 ...
L8.4 - 二分查找、排列组合与质数筛法深度解析(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8.4 - 二分查找、排列组合与质数筛法深度解析(拓展) 🎯 教学目标 掌握二分查找核心原理:理解边界控制与时间复杂度 精通排列组合生成算法:实现高效无重复的排列组合 理解质数筛法机制:掌握埃氏筛与欧拉筛的优化方法 开发高效算法思维:应对复杂问题的解决方案 📚 核心算法原理 一、二分查找(Binary Search) 1. 算法框架 12345678910111213template<typename T>int binarySearch(const vector<T>& arr, T target) { int left = 0, right = arr.size() - 1; // 闭区间 while(left <= right) { // 终止条件 int mid = left + (right - left)/2; // 防止溢出 if(arr[mid] == target) return mid; if(arr[mid] ...
L8.3 - 堆栈内存分配深度解析(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8.3 - 堆栈内存分配深度解析(拓展) 🎯 教学目标 掌握内存布局原理:理解栈、堆、静态区的存储机制 精通动态内存管理:深入理解new/delete的底层实现 规避内存操作陷阱:识别常见内存错误模式 优化内存使用效率:掌握内存池等高级技巧 📚 核心知识点 一、内存区域全景图 graph TD A[内存布局] --> B[栈区 Stack] A --> C[堆区 Heap] A --> D[静态/全局区] A --> E[常量区] A --> F[代码区] B --> B1(自动管理) B --> B2(LIFO结构) B --> B3(大小受限) C --> C1(手动管理) C --> C2(随机访问) C --> C3(大容量) 二、栈内存 vs 堆内存对比 特性 栈内存 堆内存 管理方式 编译器自动管理 程序员手动管理 分配速度 纳秒级(移动栈指针 ...
L8.2 - 递归&指针深度解析(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8.2 - 递归&指针深度解析(拓展) 🎯 教学目标 掌握递归核心原理:理解调用栈机制与递归三要素 精通指针操作技巧:从内存层面理解程序运行机制 规避递归与指针陷阱:识别常见错误模式 开发复杂数据结构:实现链表、树等递归结构 📚 核心知识点 一、递归核心原理 1. 递归三要素 12345678910int factorial(int n) { // 终止条件 if(n == 0) return 1; // 要素1:基准情形 // 递归调用 int prev = factorial(n-1); // 要素2:递归推进 // 状态合并 return n * prev; // 要素3:问题分解} 二、指针操作全景 1. 指针类型体系 类型 示例 内存示意图 裸指针 int* p = &a; [a地址] → 42 双指针 int** pp = &p; [pp地址] → [p地址] → 42 函数指针 void (*f ...
L8.1 - 位运算深度解析(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8.1 - 位运算深度解析(拓展) 🎯 教学目标 掌握位运算的底层原理:理解二进制位的操作机制 熟练应用位操作技巧:提升算法效率与内存利用率 规避常见位操作陷阱:识别并修复典型错误 开发位运算思维:将位操作融入程序设计 📚 核心知识点 一、基础位运算符表 运算符 名称 示例 二进制运算说明 应用场景 & 按位与 0b1100 & 0b1010 = 0b1000 同1为1 掩码操作、奇偶判断 | 按位或 0b1100 | 0b1010 = 0b1110 有1为1 位标记合并 ^ 按位异或 0b1100 ^ 0b1010 = 0b0110 不同为1 数值交换、加密 ~ 按位取反 ~0b0011 = 0b1100 0变1,1变0 补码运算 << 左移 0b0011 << 2 = 0b1100 高位丢弃,低位补0 快速乘2^n >> 右移 0b1100 >> 2 = 0b0011 低位丢弃,高位补符号位 快速除2^n 二、位操作进阶技巧 1. 状态压缩(State Compr ...
L8 - 高阶算法与数论专题
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L8 - 高阶算法与数论专题 🎯 教学目标 掌握二分答案的复杂场景应用 建立递推思维解决组合数学问题 实现高效质数筛法优化算法性能 融合多知识点解决综合性难题 🔑 核心知识点 一、二分答案升级(复杂条件验证) 典型问题:最小化最大值问题 模板代码: 1234567double left=MIN, right=MAX;for(int i=0; i<100; i++) { // 精度控制替代传统终止条件 double mid = (left + right) / 2; if(check(mid)) right = mid; // check函数复杂度可突破 else left = mid;}// 最终答案保留4位小数:printf("%.4f", left); 应用场景: 木棍切割最大长度 最小化机器人移动距离 二、递推与组合数学 1. 递推公式推导 1234// 斐波那契数列f[0] = 0, f[1] = 1;for(int i=2; i<=n; i++) f[i] = f[i-1] + f ...
L7 - 算法优化与高效问题求解
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L7 - 算法优化与高效问题求解 🎯 教学目标 掌握时间复杂度分析方法,能估算程序性能并优化算法 熟练应用前缀和技巧,解决区间统计类问题 深入理解二分法,实现查找与答案判定双重功能 构建递归思维模型,学会用记忆化搜索优化重复计算 📚 核心知识体系 一、时间复杂度分析(理论基石) 123456789// 示例:比较两种算法的耗时差异void algo_O_n(int n) { // O(n) for(int i=0; i<n; i++) { /* 操作 */ }}void algo_O_n2(int n) { // O(n²) for(int i=0; i<n; i++) for(int j=0; j<n; j++) { /* 操作 */ }} 复杂度对比表 数据规模 O(n)(毫秒) O(n²)(毫秒) n=1e3 1 1000 n=1e4 10 100000 二、前缀和与差分数组(区间处理利器) 1. 一维前缀和模板 12 ...
L6.1 - 指针与动态内存(拓展)
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L6.1 - 指针与动态内存(拓展) 🎯 教学目标 掌握指针运算与内存地址操作 熟练使用new/delete管理动态内存 理解智能指针的工作原理 掌握函数指针的高级应用 预防内存泄漏与悬空指针问题 🔑 核心知识点 1. 指针基础概念 内存地址可视化模型 1230x1000 [ 10 ] ← int a = 100x1004 [ 0x1000 ] ← int* p = &a0x1008 [ 0x1004 ] ← int** pp = &p 指针声明三要素: 123int* p; // 声明指针变量p = &a; // 取地址操作cout << *p; // 解引用操作 指针运算原理 123456int arr[5] = {10,20,30,40,50};int* ptr = arr;ptr + 1 → 地址增加sizeof(int)(通常4字节)*(ptr+3) ← 等价于arr[3]ptr++ ← 移动到下一个元素 2. 动态内存管理 内存分配生命周期图 1234┌──────── ...
L6 - 算法优化与多维数组
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L6 - 算法优化与多维数组 📚 核心知识模块 graph TB L6[L6 算法与多维数组] L6 --> A[排序算法] L6 --> B[循环优化] L6 --> C[STL函数] L6 --> D[二维数组] A --> A1(冒泡排序) A --> A2(计数排序) A --> A3(算法对比) B --> B1(循环嵌套) B --> B2(流程控制) C --> C1(sort) C --> C2(swap) C --> C3(数学函数) D --> D1(动态创建) D --> D2(矩阵运算) 🔥 重点升级内容 1. 排序算法深度对比 冒泡排序模板 123456789101112void bubbleSort(int arr[], int n) { for(int i=0; i<n-1 ...
L5 - 函数与递归
发表于2025-05-03|更新于2025-05-03|知识体系Level 1
L5 - 函数与递归 🎯 教学目标深化 函数设计原则 单一职责原则(每个函数只做一件事) 合理控制函数体长度(建议不超过50行) 避免函数副作用(除非明确需要) 递归思维训练 分治思想的实现方式 递归树分析(用于理解递归执行路径) 递归与数学归纳法的关系 🔑 核心知识点扩展 1. 函数定义深度解析 函数声明与定义的分离 123456789// mymath.h(头文件)#pragma onceint add(int a, int b); // 声明// mymath.cpp(源文件)#include "mymath.h"int add(int a, int b) { // 定义 return a + b;} 头文件作用: 提供接口文档 避免重复定义 支持模块化编译 默认参数机制 1234567void printLog(string msg, int level=1) { cout << "[" << level << "] &quo ...
12
avatar
whystars
whystars' blog
文章
20
标签
9
分类
2
My Github
公告
欢迎来到whystars的blog!
最新文章
L8.5 - 数学专题:杨辉三角的编程妙用(拓展)2025-05-03
L8.4 - 二分查找、排列组合与质数筛法深度解析(拓展)2025-05-03
L8.3 - 堆栈内存分配深度解析(拓展)2025-05-03
L8.2 - 递归&指针深度解析(拓展)2025-05-03
L8.1 - 位运算深度解析(拓展)2025-05-03
分类
  • 知识体系14
    • Level 114
标签
注册表技术博客dfsc++电影高精度知识体系Level 1
归档
  • 2025年05月14
  • 2023年06月1
  • 2023年05月5
网站资讯
文章数目 :
20
已运行时间 :
本站总字数 :
18.9k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2023 - 2025 By whystars
框架 Hexo|主题 Butterfly
Made with ❤️ by whystars
搜索
数据库加载中

阅读模式
昼夜切换
复制本文地址
版权声明
搜索
数据库加载中