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


基于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 表示 1break;case 'V': result += 5; // V 表示 5break;case 'X': result += 10; // X 表示 10break;case 'L': result += 50; // L 表示 50break;case 'C': result += 100; // C 表示 100break;case 'D': result += 500; // D 表示 500break;case 'M': result += 1000; // M 表示 1000break;}// 检查当前字符是否为减法规则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 表示 1case 'V': result += 5; break; // V 表示 5case 'X': result += 10; break; // X 表示 10case 'L': result += 50; break; // L 表示 50case 'C': result += 100; break; // C 表示 100case 'D': result += 500; break; // D 表示 500case '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]; // 计算第一行的和作为参考// 检查所有行、列和对角线的和是否等于 sumif (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 表示 1case 'V': result += 5; break; // V 表示 5case 'X': result += 10; break; // X 表示 10case 'L': result += 50; break; // L 表示 50case 'C': result += 100; break; // C 表示 100case 'D': result += 500; break; // D 表示 500case '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]; // 计算第一行的和作为参考// 检查所有行、列和对角线的和是否等于 sumif (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.rhkb.cn/news/12277.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录 介绍GloVe 介绍核心思想共现矩阵1. 共现矩阵的定义2. 共现概率矩阵的定义3. 共现概率矩阵的意义4. 共现概率矩阵的构建步骤5. 共现概率矩阵的应用6. 示例7. 优缺点优点缺点 **总结** 目标函数训练过程使用预训练的GloVe词向量 优点应用总结 个人主页&#xff1a;道友老…

介绍一下Mybatis的Executor执行器

Executor执行器是用来执行我们的具体的SQL操作的 有三种基本的Executor执行器&#xff1a; SimpleExecutor简单执行器 每执行一次update或select&#xff0c;就创建一个Statement对象&#xff0c;用完立刻关闭Statement对象 ReuseExecutor可重用执行器 可重复利用Statement…

Autosar-以太网是怎么运行的?(Davinci配置部分)

写在前面&#xff1a; 入行一段时间了&#xff0c;基于个人理解整理一些东西&#xff0c;如有错误&#xff0c;欢迎各位大佬评论区指正&#xff01;&#xff01;&#xff01; 目录 1.Autosar ETH通讯软件架构 2.Ethernet MCAL配置 2.1配置对应Pin属性 2.2配置TXD引脚 2.3配…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;1.登录-持久层 &…

VSCode设置内容字体大小

1、打开VSCode软件&#xff0c;点击左下角的“图标”&#xff0c;选择“Setting”。 在命令面板中的Font Size处选择适合自己的字体大小。 2、对比Font Size值为14与20下的字体大小。

企业商业秘密百问百答之三十八【商务保密协议签订】

《企业商业秘密百问百答》是由天禾律所陈军律师团队精心编撰的成果&#xff0c;汇集了该团队律师在处理商业秘密相关的刑事和民事案件中的丰富经验。近年来&#xff0c;这份资料已通过线上和线下的方式向全国近千家企业进行了广泛宣讲&#xff0c;并获得了积极的社会反响。 其…

C++11中的bind

官方文档对于bind接口的概述解释&#xff1a;Bind function arguments 在C11中&#xff0c;std::bind 是一个非常有用的工具&#xff0c;用于将函数、成员函数或函数对象与特定的参数绑定在一起&#xff0c;生成一个新的可调用对象。std::bind 可以用于部分应用函数参数、改变…

Qt网络相关

“ 所有生而孤独的人&#xff0c;葆有的天真 ” 为了⽀持跨平台, QT对⽹络编程的 API 也进⾏了重新封装。本章会上手一套基于QT的网络通信编写。 UDP Socket 在使用Qt进行网络编程前&#xff0c;需要在Qt项目中的.pro文件里添加对应的网络模块( network ). QT core gui net…

会计学基础

【拯救者】会计学基础速成&#xff08;期末 复试 升本均可用&#xff09; ©无忌教育 重点: 适用课本: 会计基础 会计基础是指会计工作的基本原则和方法&#xff0c;它努力为会计核算提供一个共同的基础&#xff0c;以便各种组织在会计核算上得到一致的结果。会计基础主要…

我们信仰AI?从神明到人工智能——信任的进化

信任的进化&#xff1a; 信任是我们最宝贵的资产。而现在&#xff0c;它正像黑色星期五促销的廉价平板电视一样&#xff0c;被一点点拆解。在过去&#xff0c;世界很简单&#xff1a;人们相信晚间新闻、那些满是灰尘书籍的教授&#xff0c;或者手持病历、眉头紧锁的医生。而如…

《DeepSeek R1:7b 写一个python程序调用摄像头获取视频并显示》

C:\Users\Administrator>ollama run deepseek-r1:7b hello Hello! How can I assist you today? &#x1f60a; 写一个python程序调用摄像头获取视频并显示 好&#xff0c;我需要帮用户写一个Python程序&#xff0c;它能够使用摄像头获取视频&#xff0c;并在屏幕上显示出…

Linux网络 | 进入数据链路层,学习相关协议与概念

前言&#xff1a;本节内容进入博主讲解的网络层级中的最后一层&#xff1a;数据链路层。 首先博主还是会线代友友们认识一下数据链路层的报文。 然后会带大家重新理解一些概念&#xff0c;比如局域网交换机等等。然后就是ARP协议。 讲完这些&#xff0c; 本节任务就算结束。 那…

Python 科学计算

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

18.[前端开发]Day18-王者荣耀项目实战(一)

01-06 项目实战 1 代码规范 2 CSS编写顺序 3 组件化开发思想 组件化开发思路 项目整体思路 – 各个击破 07_(掌握)王者荣耀-top-整体布局完成 完整代码 01_page_top1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…

Java 大视界 -- Java 大数据在智能医疗影像诊断中的应用(72)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也期待你毫无保留地分享独特见解,愿我们于此携手成长,共赴新程!💖 一、…

知识管理平台在提升组织智慧与执行力方面的关键作用探讨

内容概要 知识管理平台是现代组织在日益激烈的竞争环境中提升自身智慧和执行力的重要工具。其基本概念在于通过系统化的方式收集、整理和共享知识资源&#xff0c;确保组织内部的信息流畅和决策信息的及时性。这不仅强化了团队成员之间的沟通与协作&#xff0c;还促进了对复杂…

STM32F103ZET6完整技术点(持续更新~)

①STM32②F③103④Z⑤E⑥T⑦6简介&#xff1a; ①基于ARM核心的32位微控制器&#xff0c;②通用类型&#xff0c;③增强型&#xff0c;④引脚数目144个 ⑤闪存存储器容量&#xff1a;512K字节&#xff0c;⑥封装:LQFP&#xff0c;⑦温度范围&#xff1a;工业级温度范围&#xf…

交叉验证、精确率、召回率

1. 交叉验证 交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证&#xff0c;顾名思义&#xff0c;就是重复的使用数据&#xff0c;把得到的样本数据进行切分&#xff0c;组合为不同的训练集和测试集&#xff0c;用训练集来训练模型&#xff0c;用测试集来评估…

sql表的增删改、替换

一、增加 1、向原表的字段中插入多条记录的方法 # mysql中常用的三种插入数据的语句: # insert into表示插入数据&#xff0c;数据库会检查主键&#xff0c;如果出现重复会报错&#xff1b; # replace into表示插入替换数据&#xff0c;需求表中有PrimaryKey&#xff0c; # 或…

执行策略更改

执行策略三种模式&#xff1a; Restricted&#xff1a;不允许运行任何脚本&#xff08;这是默认设置&#xff09;。RemoteSigned&#xff1a;允许本地脚本运行&#xff0c;但从互联网下载的脚本需要有效的签名才能运行。Unrestricted&#xff1a;允许所有脚本运行&#xff0c;…