蓝桥杯C语言组:暴力破解

news2025/3/12 13:45:31

基于C语言的暴力破解方法详解

暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。在C语言中,暴力破解通常用于解决那些问题规模较小、解的范围有限的问题。虽然暴力破解的效率通常较低,但它是一种简单直接的方法,适用于一些简单的或没有更优解法的问题。本文将详细介绍基于C语言的暴力破解方法,包括罗马数字逆向解法、罗马数字的枚举解法和九宫幻方解法,并通过具体的代码实例和详细注释来帮助理解。

 


目录

基于C语言的暴力破解方法详解

一、罗马数字逆向解法

二、罗马数字的枚举解法

三、九宫幻方解法

四、暴力破解的解题思路

五、暴力破解的优缺点

六、总结

表格总结


一、罗马数字逆向解法

1. 罗马数字规则

罗马数字由以下符号组成:

  • I = 1

  • V = 5

  • X = 10

  • L = 50

  • C = 100

  • D = 500

  • M = 1000

罗马数字的组合规则:

  • 当较小的数字在较大的数字左边时,表示减法(如 IV = 4)。

  • 当较小的数字在较大的数字右边时,表示加法(如 VI = 6)。

2. 暴力破解思路

通过遍历罗马数字字符串,根据上述规则计算其对应的阿拉伯数字。主要步骤如下:

  1. 初始化结果变量 result 为 0。

  2. 遍历罗马数字字符串,根据字符对应的值累加到 result

  3. 检查当前字符是否为减法规则(如 IV、XL 等),如果是,则从 result 中减去相应的值。

3. 示例代码及详细注释

#include <stdio.h>
#include <string.h>

// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {
    int result = 0; // 初始化结果变量
    int len = strlen(s); // 获取罗马数字字符串的长度

    // 遍历罗马数字字符串
    for (int i = 0; i < len; i++) {
        // 根据当前字符对应的值累加到结果
        switch (s[i]) {
            case 'I': 
                result += 1; // I 表示 1
                break;
            case 'V': 
                result += 5; // V 表示 5
                break;
            case 'X': 
                result += 10; // X 表示 10
                break;
            case 'L': 
                result += 50; // L 表示 50
                break;
            case 'C': 
                result += 100; // C 表示 100
                break;
            case 'D': 
                result += 500; // D 表示 500
                break;
            case 'M': 
                result += 1000; // M 表示 1000
                break;
        }

        // 检查当前字符是否为减法规则
        if (i > 0) { // 确保不是第一个字符
            if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') 
                result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)
            if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') 
                result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)
            if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') 
                result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)
        }
    }
    return result; // 返回最终结果
}

int main() {
    char roman[] = "MCMXCIV"; // 示例罗马数字
    printf("The integer value of %s is %d\n", roman, romanToInt(roman)); // 输出结果
    return 0;
}

4. 解题步骤

  1. 初始化结果变量result 用于存储最终的阿拉伯数字。

  2. 遍历罗马数字字符串:逐个字符读取罗马数字字符串。

  3. 根据字符累加值:根据罗马数字字符对应的值,累加到 result

  4. 检查减法规则:如果当前字符表示减法规则(如 IV、XL 等),则从 result 中减去相应的值。

  5. 返回结果:最终返回计算得到的阿拉伯数字。


二、罗马数字的枚举解法

1. 暴力破解思路

通过枚举所有可能的罗马数字组合,计算其对应的阿拉伯数字,并与目标值进行比较。这种方法适用于罗马数字较短的情况。

2. 示例代码及详细注释

#include <stdio.h>
#include <string.h>

// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {
    int result = 0; // 初始化结果变量
    int len = strlen(s); // 获取罗马数字字符串的长度

    // 遍历罗马数字字符串
    for (int i = 0; i < len; i++) {
        // 根据当前字符对应的值累加到结果
        switch (s[i]) {
            case 'I': result += 1; break; // I 表示 1
            case 'V': result += 5; break; // V 表示 5
            case 'X': result += 10; break; // X 表示 10
            case 'L': result += 50; break; // L 表示 50
            case 'C': result += 100; break; // C 表示 100
            case 'D': result += 500; break; // D 表示 500
            case 'M': result += 1000; break; // M 表示 1000
        }

        // 检查当前字符是否为减法规则
        if (i > 0) { // 确保不是第一个字符
            if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') 
                result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)
            if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') 
                result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)
            if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') 
                result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)
        }
    }
    return result; // 返回最终结果
}

int main() {
    // 定义一个常见的罗马数字数组
    char *romans[] = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"};
    int target = 4; // 目标阿拉伯数字

    // 遍历罗马数字数组
    for (int i = 0; i < 10; i++) {
        if (romanToInt(romans[i]) == target) { // 比较转换后的值与目标值
            printf("The Roman numeral for %d is %s\n", target, romans[i]); // 输出匹配的罗马数字
            break;
        }
    }
    return 0;
}

3. 解题步骤

  1. 定义罗马数字数组:包含常见的罗马数字组合。

  2. 遍历数组:逐个读取罗马数字字符串。

  3. 转换为阿拉伯数字:使用 romanToInt 函数将罗马数字转换为阿拉伯数字。

  4. 比较目标值:将转换后的值与目标值进行比较。

  5. 输出结果:如果找到匹配的罗马数字,输出结果。


三、九宫幻方解法

1. 暴力破解思路

九宫幻方是一个3×3的矩阵,其中每行、每列以及两条对角线的和都相等。暴力破解九宫幻方的方法是通过穷举所有可能的数字组合,找到符合条件的解。

2. 示例代码及详细注释

#include <stdio.h>
#include <string.h>

int g[3][3]; // 存储九宫格数字
int st[10];  // 标记数字是否被使用

// 检查九宫格是否满足条件
int check() {
    int sum = g[0][0] + g[0][1] + g[0][2]; // 计算第一行的和作为参考
    // 检查所有行、列和对角线的和是否等于 sum
    if (g[1][0] + g[1][1] + g[1][2] != sum) return 0; // 第二行
    if (g[2][0] + g[2][1] + g[2][2] != sum) return 0; // 第三行
    if (g[0][0] + g[1][0] + g[2][0] != sum) return 0; // 第一列
    if (g[0][1] + g[1][1] + g[2][1] != sum) return 0; // 第二列
    if (g[0][2] + g[1][2] + g[2][2] != sum) return 0; // 第三列
    if (g[0][0] + g[1][1] + g[2][2] != sum) return 0; // 主对角线
    if (g[0][2] + g[1][1] + g[2][0] != sum) return 0; // 副对角线
    return 1; // 如果所有条件都满足,返回 1
}

// 深度优先搜索函数
void dfs(int u) {
    if (u == 9) { // 如果已经填满所有位置
        if (check()) { // 检查是否满足九宫幻方条件
            // 输出满足条件的九宫幻方
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    printf("%d ", g[i][j]); // 输出每个数字
                }
                printf("\n"); // 换行
            }
            printf("\n"); // 输出一个空行
        }
        return;
    }

    // 枚举所有可能的数字
    for (int i = 1; i <= 9; i++) {
        if (!st[i]) { // 如果当前数字未被使用
            st[i] = 1; // 标记为已使用
            g[u / 3][u % 3] = i; // 将数字填入九宫格
            dfs(u + 1); // 递归处理下一个位置
            st[i] = 0; // 回溯,标记为未使用
        }
    }
}

int main() {
    memset(st, 0, sizeof(st)); // 初始化状态数组
    dfs(0); // 从第一个位置开始深度优先搜索
    return 0;
}

3. 解题步骤

  1. 初始化九宫格和状态数组

    • g[3][3] 用于存储九宫格的数字。

    • st[10] 用于标记每个数字是否被使用。

  2. 定义检查函数

    • check() 函数用于检查当前九宫格是否满足九宫幻方的条件。

  3. 深度优先搜索

    • dfs(u) 函数用于递归生成所有可能的数字排列。

    • 枚举所有可能的数字(1 到 9),并尝试填入九宫格。

    • 使用回溯法(标记和取消标记)来尝试所有可能的组合。

  4. 输出结果

    • 如果找到满足条件的九宫幻方,输出其内容。


四、暴力破解的解题思路

1. 暴力破解的基本思路

  1. 明确问题的解空间

    • 确定所有可能的解的范围。例如,对于一个密码破解问题,解空间可能是所有可能的字符组合;对于一个数学问题,解空间可能是所有可能的数字组合。

  2. 设计穷举策略

    • 按照一定的顺序(通常是从小到大或从简单到复杂)遍历解空间中的每一个可能解。

  3. 验证每个可能解

    • 对于每一个可能的解,检查它是否满足问题的条件。如果满足,则记录下来;如果不满足,则继续尝试下一个解。

  4. 输出结果

    • 在遍历完所有可能的解之后,输出所有满足条件的解,或者输出第一个满足条件的解(如果只需要一个解)。

2. 暴力破解的常见应用场景

  1. 密码破解

    • 通过尝试所有可能的密码组合来找到正确的密码。

  2. 组合问题

    • 例如,找出所有可能的数字组合,使得它们满足某些条件。

  3. 数学问题

    • 例如,找出所有满足某个方程的整数解。

  4. 优化问题

    • 通过穷举所有可能的解,找到最优解。

3. 暴力破解的解题步骤

以下通过几个具体的例子来详细说明暴力破解的解题步骤。

3.1 罗马数字逆向解法

问题描述: 将罗马数字转换为对应的阿拉伯数字。

解题步骤

  1. 明确问题的解空间

    • 罗马数字由字符 IVXLCDM 组成,每个字符对应一个固定的阿拉伯数字。

  2. 设计穷举策略

    • 遍历罗马数字字符串,逐个字符进行处理。

  3. 验证每个可能解

    • 根据罗马数字的规则,判断当前字符是否表示减法规则(如 IV 表示 4,IX 表示 9)。

  4. 输出结果

    • 将所有字符对应的阿拉伯数字累加起来,得到最终结果。

代码实现

#include <stdio.h>
#include <string.h>

// 将罗马数字转换为对应的阿拉伯数字
int romanToInt(char *s) {
    int result = 0; // 初始化结果变量
    int len = strlen(s); // 获取罗马数字字符串的长度

    // 遍历罗马数字字符串
    for (int i = 0; i < len; i++) {
        // 根据当前字符对应的值累加到结果
        switch (s[i]) {
            case 'I': result += 1; break; // I 表示 1
            case 'V': result += 5; break; // V 表示 5
            case 'X': result += 10; break; // X 表示 10
            case 'L': result += 50; break; // L 表示 50
            case 'C': result += 100; break; // C 表示 100
            case 'D': result += 500; break; // D 表示 500
            case 'M': result += 1000; break; // M 表示 1000
        }

        // 检查当前字符是否为减法规则
        if (i > 0) { // 确保不是第一个字符
            if ((s[i] == 'V' || s[i] == 'X') && s[i - 1] == 'I') 
                result -= 2; // IV 或 IX 的情况,减去 2(因为之前多加了 1)
            if ((s[i] == 'L' || s[i] == 'C') && s[i - 1] == 'X') 
                result -= 20; // XL 或 XC 的情况,减去 20(因为之前多加了 10)
            if ((s[i] == 'D' || s[i] == 'M') && s[i - 1] == 'C') 
                result -= 200; // CD 或 CM 的情况,减去 200(因为之前多加了 100)
        }
    }
    return result; // 返回最终结果
}

int main() {
    char roman[] = "MCMXCIV"; // 示例罗马数字
    printf("The integer value of %s is %d\n", roman, romanToInt(roman)); // 输出结果
    return 0;
}

解题思路总结

  • 明确解空间:罗马数字字符集合。

  • 穷举策略:逐个字符遍历罗马数字字符串。

  • 验证:根据罗马数字规则判断是否需要减法操作。

  • 输出:累加所有字符对应的阿拉伯数字。

3.2 九宫幻方解法

问题描述: 九宫幻方是一个3×3的矩阵,其中每行、每列以及两条对角线的和都相等。需要找到所有可能的九宫幻方。

解题步骤

  1. 明确问题的解空间

    • 九宫幻方由数字1到9组成,每个数字只能使用一次。

  2. 设计穷举策略

    • 使用深度优先搜索(DFS)生成所有可能的数字排列。

  3. 验证每个可能解

    • 检查每个排列是否满足九宫幻方的条件(每行、每列、每条对角线的和相等)。

  4. 输出结果

    • 输出所有满足条件的九宫幻方。

代码实现

#include <stdio.h>
#include <string.h>

int g[3][3]; // 存储九宫格数字
int st[10];  // 标记数字是否被使用

// 检查九宫格是否满足条件
int check() {
    int sum = g[0][0] + g[0][1] + g[0][2]; // 计算第一行的和作为参考
    // 检查所有行、列和对角线的和是否等于 sum
    if (g[1][0] + g[1][1] + g[1][2] != sum) return 0; // 第二行
    if (g[2][0] + g[2][1] + g[2][2] != sum) return 0; // 第三行
    if (g[0][0] + g[1][0] + g[2][0] != sum) return 0; // 第一列
    if (g[0][1] + g[1][1] + g[2][1] != sum) return 0; // 第二列
    if (g[0][2] + g[1][2] + g[2][2] != sum) return 0; // 第三列
    if (g[0][0] + g[1][1] + g[2][2] != sum) return 0; // 主对角线
    if (g[0][2] + g[1][1] + g[2][0] != sum) return 0; // 副对角线
    return 1; // 如果所有条件都满足,返回 1
}

// 深度优先搜索函数
void dfs(int u) {
    if (u == 9) { // 如果已经填满所有位置
        if (check()) { // 检查是否满足九宫幻方条件
            // 输出满足条件的九宫幻方
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    printf("%d ", g[i][j]); // 输出每个数字
                }
                printf("\n"); // 换行
            }
            printf("\n"); // 输出一个空行
        }
        return;
    }

    // 枚举所有可能的数字
    for (int i = 1; i <= 9; i++) {
        if (!st[i]) { // 如果当前数字未被使用
            st[i] = 1; // 标记为已使用
            g[u / 3][u % 3] = i; // 将数字填入九宫格
            dfs(u + 1); // 递归处理下一个位置
            st[i] = 0; // 回溯,标记为未使用
        }
    }
}

int main() {
    memset(st, 0, sizeof(st)); // 初始化状态数组
    dfs(0); // 从第一个位置开始深度优先搜索
    return 0;
}

解题思路总结

  • 明确解空间:数字1到9,每个数字只能使用一次。

  • 穷举策略:使用深度优先搜索生成所有可能的数字排列。

  • 验证:检查每个排列是否满足九宫幻方的条件。

  • 输出:输出所有满足条件的九宫幻方。

3.3 密码暴力破解

问题描述: 假设有一个简单的数字密码,密码长度为4位,密码由数字0到9组成。需要通过暴力破解找到正确的密码。

解题步骤

  1. 明确问题的解空间

    • 密码由4位数字组成,每一位数字的范围是0到9。

  2. 设计穷举策略

    • 使用嵌套循环生成所有可能的4位数字组合。

  3. 验证每个可能解

    • 将生成的密码与预设的正确密码进行比较。

  4. 输出结果

    • 如果找到匹配的密码,输出结果并结束程序。

代码实现

#include <stdio.h>

int main() {
    int password = 1234; // 预设的正确密码
    int found = 0; // 标记是否找到正确密码

    // 使用嵌套循环生成所有可能的4位数字组合
    for (int i = 0; i <= 9; i++) {
        for (int j = 0; j <= 9; j++) {
            for (int k = 0; k <= 9; k++) {
                for (int l = 0; l <= 9; l++) {
                    int attempt = i * 1000 + j * 100 + k * 10 + l; // 生成当前尝试的密码
                    if (attempt == password) { // 比较是否为正确密码
                        printf("Password found: %d\n", attempt); // 输出结果
                        found = 1; // 标记找到
                        break; // 结束循环
                    }
                }
                if (found) break; // 如果找到密码,退出循环
            }
            if (found) break; // 如果找到密码,退出循环
        }
        if (found) break; // 如果找到密码,退出循环
    }

    if (!found) {
        printf("Password not found.\n"); // 如果未找到密码,输出提示
    }

    return 0;
}

解题思路总结

  • 明确解空间:4位数字,每一位的范围是0到9。

  • 穷举策略:使用嵌套循环生成所有可能的组合。

  • 验证:将生成的密码与预设密码进行比较。

  • 输出:如果找到匹配的密码,输出结果。


五、暴力破解的优缺点

优点
  1. 简单直接

    • 暴力破解的思路简单,容易实现,不需要复杂的算法或数据结构。

  2. 适用范围广

    • 对于一些没有更优解法的问题,暴力破解是一种有效的解决方案。

  3. 容易理解

    • 代码逻辑清晰,容易理解和调试。

缺点
  1. 效率低下

    • 对于问题规模较大的情况,暴力破解的时间复杂度和空间复杂度可能非常高,导致运行时间过长。

  2. 不适用于复杂问题

    • 对于一些复杂的优化问题或大规模数据处理问题,暴力破解可能不可行。


六、总结

暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。它适用于问题规模较小、解的范围有限的情况。虽然暴力破解的效率较低,但它的实现简单,容易理解,是一种有效的解题方法。在实际应用中,可以根据问题的具体情况选择是否使用暴力破解,或者结合其他更高效的算法来优化解题过程。

通过上述几个具体的例子,我们详细介绍了暴力破解的解题思路和实现方法。希望这些内容能够帮助你更好地理解和应用暴力破解技术。

表格总结

问题类型方法适用场景优点缺点
罗马数字逆向解法规则查找罗马数字较短简单高效仅适用于已知规则
罗马数字枚举解法枚举所有组合罗马数字较短简单直观效率较低
九宫幻方解法深度优先搜索九宫幻方可找到所有解效率较低,适合小规模问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2292257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七. Redis 当中 Jedis 的详细刨析与使用

七. Redis 当中 Jedis 的详细刨析与使用 文章目录 七. Redis 当中 Jedis 的详细刨析与使用1. Jedis 概述2. Java程序中使用Jedis 操作 Redis 数据2.1 Java 程序使用 Jedis 连接 Redis 的注意事项2.2 Java程序通过 Jedis当中操作 Redis 的 key 键值对2.3 Java程序通过 Jedis 当中…

NLP深度学习 DAY5:Sequence-to-sequence 模型详解

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种用于处理输入和输出均为序列任务的深度学习模型。它最初被设计用于机器翻译&#xff0c;但后来广泛应用于其他任务&#xff0c;如文本摘要、对话系统、语音识别、问答系统等。 核心思想 Seq2Seq 模型的目标是将…

04树 + 堆 + 优先队列 + 图(D1_树(D17_综合刷题练习))

目录 1. 二叉树的前序遍历&#xff08;简单&#xff09; 1.1. 题目描述 1.2. 解题思路 方法一&#xff1a;递归&#xff08;推荐使用&#xff09; 方法二&#xff1a;非递归&#xff08;扩展思路&#xff09; 2. 二叉树的中序遍历&#xff08;中等&#xff09; 2.1. 题目…

总结11..

#include <stdio.h> #include <string.h> #define MAXN 1001 #define MAXM 1000001 int n, m; char maze[MAXN][MAXN]; int block[MAXN][MAXN]; // 标记每个格子所属的连通块编号 int blockSize[MAXN * MAXN]; // 记录每个连通块的大小 int dx[] {0, 0, 1, -1};…

35.Word:公积金管理中心文员小谢【37】

目录 Word1.docx ​ Word2.docx Word2.docx ​ 注意本套题还是与上一套存在不同之处 Word1.docx 布局样式的应用设计页眉页脚位置在水平/垂直方向上均相对于外边距居中排列&#xff1a;格式→大小对话框→位置→水平/垂直 按下表所列要求将原文中的手动纯文本编号分别替换…

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址&#xff1a;https://arxiv.org/pdf/2405.14767 Github地址&#xff1a;https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…

【网络】应用层协议http

文章目录 1. 关于http协议2. 认识URL3. http协议请求与响应格式3.1 请求3.2 响应 3. http的常见方法4. 状态码4.1 常见状态码4.2 重定向 5. Cookie与Session5.1 Cookie5.1.1 认识Cookie5.1.2 设置Cookie5.1.3 Cookie的生命周期 5.2 Session 6. HTTP版本&#xff08;了解&#x…

React+AI 技术栈(2025 版)

文章目录 核心&#xff1a;React TypeScript元框架&#xff1a;Next.js样式设计&#xff1a;Tailwind CSSshadcn/ui客户端状态管理&#xff1a;Zustand服务器状态管理&#xff1a;TanStack Query动画效果&#xff1a;Motion测试工具表格处理&#xff1a;TanStack Table表单处理…

计算机从何而来?计算技术将向何处发展?

计算机的前生&#xff1a;机械计算工具的演进 算盘是计算机的起点&#xff0c;它其实是一台“机械式半自动化运算器”。打算盘的“口诀”其实就是它的编程语言&#xff0c;算盘珠就是它的存储器。 第二阶段是可以做四则运算的加法器、乘法器。1642年&#xff0c;法国数学家帕斯…

Docker使用指南(二)——容器相关操作详解(实战案例教学,创建/使用/停止/删除)

目录 1.容器操作相关命令​编辑 案例一&#xff1a; 案例二&#xff1a; 容器常用命令总结&#xff1a; 1.查看容器状态&#xff1a; 2.删除容器&#xff1a; 3.进入容器&#xff1a; 二、Docker基本操作——容器篇 1.容器操作相关命令 下面我们用两个案例来具体实操一…

从通讯工具到 AI 助理,AI手机如何发展?

随着AI进军各行各业&#xff0c;全面AI化时代已经到来。手机&#xff0c;作为现代人类的“数字器官”之一&#xff0c;更是首当其冲地融入了这一变革浪潮之中。 2024年年初&#xff0c;OPPO联合IDC发布了《AI手机白皮书》&#xff0c;公布OPPO已迈向AI手机这一全新阶段。到如今…

小程序-基础加强

前言 这一节把基础加强讲完 1. 导入需要用到的小程序项目 2. 初步安装和使用vant组件库 这里还可以扫描二维码 其中步骤四没什么用 右键选择最后一个 在开始之前&#xff0c;我们的项目根目录得有package.json 没有的话&#xff0c;我们就初始化一个 但是我们没有npm这个…

【CSS】谈谈你对BFC的理解

理解 CSS 中的 BFC&#xff08;块格式化上下文&#xff09; 在 CSS 中&#xff0c;BFC&#xff08;Block Formatting Context&#xff09; 是一个非常重要的概念&#xff0c;它决定了元素如何对其子元素进行定位&#xff0c;以及与其他元素的关系。理解 BFC 对于解决常见的布局…

【Uniapp-Vue3】iconfont图标库的使用

先在iconfont图标库中将需要的图标加入购物车 点击右侧购物车的图标 点击添加至项目&#xff0c;可以选中项目进行加入&#xff0c;也可以点击文件加号创建一个新的项目并添加 加入以后会来到如下界面&#xff0c;点击下载至本地 双击打开下载的.zip文件 将.css和.ttf文件进…

Linux find 命令 | grep 命令 | 查找 / 列出文件或目录路径 | 示例

注&#xff1a;本文为 “Linux find 命令 | grep 命令使用” 相关文章合辑。 未整理去重。 如何在 Linux 中查找文件 作者&#xff1a; Lewis Cowles 译者&#xff1a; LCTT geekpi | 2018-04-28 07:09 使用简单的命令在 Linux 下基于类型、内容等快速查找文件。 如果你是 W…

Day 28 卡玛笔记

这是基于代码随想录的每日打卡 77. 组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]示例 2…

1.PPT:天河二号介绍【12】

目录 NO1 NO2.3.4.5 NO6.7.8.9​ NO1 PPT&#xff1a;新建一个空白演示文档→保存到考生文件夹下&#xff1a;天河二号超级计算机.pptx幻灯片必须选择一种设计主题&#xff1a;设计→主题&#xff08;随便选中一种&#xff09;幻灯片的版式&#xff1a;开始→版式&#x…

物联网领域的MQTT协议,优势和应用场景

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;作为轻量级发布/订阅协议&#xff0c;凭借其低带宽消耗、低功耗与高扩展性&#xff0c;已成为物联网通信的事实标准。其核心优势包括&#xff1a;基于TCP/IP的异步通信机制、支持QoS&#xff08;服务质量&…

电控---中断

中断 1.处理器系统在执行代码的时候&#xff0c;会从存储器依次取出指令和数据&#xff0c;这种能力需要在处理器里保存一个存储器地址&#xff0c;就是所谓的程序计数器&#xff08;Program Counter,PC&#xff09;&#xff0c;也叫程序指针 2.当外部中断&#xff08;Extern …