【2024年华为OD机试】 (C卷,100分)- 密钥格式化(Java JS PythonC/C++)

在这里插入图片描述

一、问题描述

题目描述

给定一个非空字符串 S,其被 N 个‘-’分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的串每 K 个用‘-’分隔,并将小写字母转换为大写。

输入描述

正整数 K 和‘-’分割的字符串,如:

2
25G3C-abc-d

输出描述

转换后的字符串

用例

用例 1

输入:

4
5F3Z-2e-9-w

输出:

5F3Z-2E9W

说明:
字符串 S 被分成了两个部分,每部分 4 个字符;
注意,两个额外的破折号需要删掉。

用例 2

输入:

2
2-5g-3-J

输出:

2-5G-3J

说明:
字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。

解题思路

  1. 读取输入

    • 读取正整数 K
    • 读取字符串 S
  2. 分割字符串

    • 使用 split('-') 方法将字符串 S 按‘-’分割成子串数组。
  3. 处理第一个子串

    • 第一个子串保持不变,但需要转换为大写。
  4. 处理其余子串

    • 将其余子串拼接成一个字符串。
    • 将拼接后的字符串转换为大写。
    • K 个字符插入一个‘-’。
  5. 拼接结果

    • 将处理后的第一个子串和其余部分拼接成最终的字符串。

详细步骤

  1. 读取输入

    • 从标准输入读取正整数 K
    • 从标准输入读取字符串 S
  2. 分割字符串

    • 使用 split('-') 方法将字符串 S 按‘-’分割成子串数组 parts
  3. 处理第一个子串

    • 将第一个子串 parts[0] 转换为大写。
  4. 处理其余子串

    • parts 从第二个子串开始拼接成一个字符串 rest
    • rest 转换为大写。
    • K 个字符插入一个‘-’,使用 match 方法和正则表达式实现。
  5. 拼接结果

    • 将处理后的第一个子串和其余部分拼接成最终的字符串。
  6. 输出结果

    • 输出拼接后的字符串。

用例解释

用例 1
  • 输入:
    • K = 4
    • S = 5F3Z-2e-9-w
  • 输出:
    • 5F3Z-2E9W

解释

  • 第一个子串 5F3Z 保持不变。
  • 其余子串 2e-9-w 拼接成 2e9w,转换为大写 2E9W
  • 每 4 个字符插入一个‘-’,得到 2E9W
  • 最终结果为 5F3Z-2E9W
用例 2
  • 输入:
    • K = 2
    • S = 2-5g-3-J
  • 输出:
    • 2-5G-3J

解释

  • 第一个子串 2 保持不变。
  • 其余子串 5g-3-J 拼接成 5g3J,转换为大写 5G3J
  • 每 2 个字符插入一个‘-’,得到 5G-3J
  • 最终结果为 2-5G-3J

通过上述步骤,我们可以高效地处理字符串,确保结果符合要求。这种方法的时间复杂度主要由字符串操作决定,为 O(n),其中 n 是字符串的长度。

二、JavaScript算法源码

以下是 JavaScript 代码的详细中文注释和逻辑讲解


JavaScript 代码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline"); // 引入 readline 模块,用于读取控制台输入

// 创建 readline 接口
const rl = readline.createInterface({
  input: process.stdin,  // 输入流为标准输入
  output: process.stdout, // 输出流为标准输出
});

// 存储输入行的数组
const lines = [];

// 监听输入事件
rl.on("line", (line) => {
  lines.push(line); // 将输入的行存入数组

  // 当输入行数为 2 时,处理输入
  if (lines.length === 2) {
    const k = parseInt(lines[0]); // 解析第一个输入为整数 k
    const s = lines[1];           // 获取第二个输入字符串 s

    console.log(getResult(s, k)); // 调用 getResult 函数并输出结果
    lines.length = 0;             // 清空输入行数组
  }
});

// 处理逻辑的函数
function getResult(s, k) {
  // 将字符串 s 按 "-" 分割成数组
  const sArr = s.split("-");

  // 获取第一个部分
  const first = sArr[0];

  // 如果只有一个部分,直接返回
  if (sArr.length == 1) return first;

  // 将剩余部分拼接成一个字符串,并转换为大写
  const tmp = sArr.slice(1).join("").toUpperCase().split("");

  // 每隔 k 个字符插入一个 "-"
  for (let i = 0; i < tmp.length; i++) {
    if (i % k == 0) tmp[i] = "-" + tmp[i];
  }

  // 返回最终结果
  return first + tmp.join("");
}

代码逻辑讲解

1. 引入模块
  • const readline = require("readline");:引入 readline 模块,用于读取控制台输入。
2. 创建 readline 接口
  • rl = readline.createInterface({ input: process.stdin, output: process.stdout });
    • 创建一个 readline 接口,用于从标准输入读取数据,并输出到标准输出。
3. 存储输入行
  • const lines = [];:定义一个数组 lines,用于存储用户输入的行。
4. 监听输入事件
  • rl.on("line", (line) => { ... });:监听用户输入事件。
    • 每次用户输入一行内容时,将其存入 lines 数组。
    • lines 数组的长度为 2 时,表示用户已经输入了两行内容,开始处理输入。
5. 处理输入
  • const k = parseInt(lines[0]);:将第一行输入解析为整数 k
  • const s = lines[1];:获取第二行输入字符串 s
  • console.log(getResult(s, k));:调用 getResult 函数处理输入,并输出结果。
  • lines.length = 0;:清空 lines 数组,以便接收下一次输入。
6. 处理逻辑的函数
  • function getResult(s, k) { ... }:定义处理逻辑的函数。
    • 步骤 1:将字符串 s"-" 分割成数组 sArr
      • 例如,输入 "2-5g-3-J",分割后得到 ["2", "5g", "3", "J"]
    • 步骤 2:获取第一个部分 first
      • 例如,first = "2"
    • 步骤 3:如果只有一个部分,直接返回 first
      • 例如,输入 "2",直接返回 "2"
    • 步骤 4:将剩余部分拼接成一个字符串,并转换为大写。
      • 例如,剩余部分为 ["5g", "3", "J"],拼接后得到 "5g3J",转换为大写后得到 "5G3J"
    • 步骤 5:每隔 k 个字符插入一个 "-"
      • 例如,k = 2,字符串为 "5G3J"
        • 在第 0 个字符前插入 "-",得到 "-5G3J"
        • 在第 2 个字符前插入 "-",得到 "-5G-3J"
    • 步骤 6:返回最终结果。
      • 例如,first = "2",拼接后得到 "2-5G-3J"

代码细节解析

1. 输入处理
  • 使用 readline 模块读取用户输入的两行内容。
  • 第一行解析为整数 k,第二行作为字符串 s
2. 字符串分割
  • 使用 split("-") 将字符串 s"-" 分割成数组 sArr
3. 处理剩余部分
  • 使用 slice(1) 获取剩余部分,并拼接成一个字符串。
  • 使用 toUpperCase() 将字符串转换为大写。
4. 插入分隔符
  • 使用 for 循环遍历字符串,每隔 k 个字符插入一个 "-"
5. 返回结果
  • 将第一个部分 first 和插入分隔符后的字符串拼接,返回最终结果。

示例运行

输入
2
2-5g-3-J
处理步骤
  1. 将字符串 "2-5g-3-J""-" 分割成数组:
    [
    [“2”, “5g”, “3”, “J”]
    ]
  2. 获取第一个部分 first = "2"
  3. 将剩余部分拼接成一个字符串并转换为大写:
    [
    “5G3J”
    ]
  4. 每隔 k = 2 个字符插入一个 "-"
    • 在第 0 个字符前插入 "-",得到 "-5G3J"
    • 在第 2 个字符前插入 "-",得到 "-5G-3J"
  5. 返回最终结果:
    [
    “2-5G-3J”
    ]
输出
2-5G-3J

总结

  • 功能:将输入的字符串按规则格式化,每隔 k 个字符插入一个 "-"
  • 核心逻辑
    1. "-" 分割字符串。
    2. 将剩余部分拼接并转换为大写。
    3. 每隔 k 个字符插入 "-"
  • 适用场景:需要格式化字符串的场景,例如生成特定格式的编号或代码。
  • 注意事项
    • 输入字符串可能包含小写字母,需要转换为大写。
    • 如果输入字符串只有一个部分,直接返回该部分。

如果有其他问题,欢迎随时提问!

三、Java算法源码

以下是 Java 代码的详细中文注释和逻辑讲解


Java 代码

import java.util.Scanner; // 引入 Scanner 类,用于读取控制台输入

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in); // 创建 Scanner 对象,用于读取输入

    int k = sc.nextInt(); // 读取整数 k
    String str = sc.next(); // 读取字符串 str

    System.out.println(getResult(k, str)); // 调用 getResult 方法并输出结果
  }

  // 处理逻辑的方法
  public static String getResult(int k, String str) {
    // 将字符串 str 按 "-" 分割成数组
    String[] sArr = str.split("-");

    // 获取第一个部分
    String first = sArr[0];

    // 如果只有一个部分,直接返回
    if (sArr.length == 1) return first;

    // 使用 StringBuilder 拼接剩余部分
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i < sArr.length; i++) {
      sb.append(sArr[i]); // 将剩余部分拼接到 StringBuilder 中
    }

    // 将拼接后的字符串转换为大写,并拆分为字符数组
    String[] tmp = sb.toString().toUpperCase().split("");

    // 每隔 k 个字符插入一个 "-"
    for (int i = 0; i < tmp.length; i++) {
      if (i % k == 0) tmp[i] = "-" + tmp[i]; // 在第 i 个字符前插入 "-"
    }

    // 返回最终结果
    return first + String.join("", tmp);
  }
}

代码逻辑讲解

1. 引入 Scanner 类
  • import java.util.Scanner;:引入 Scanner 类,用于读取控制台输入。
2. 主方法
  • public static void main(String[] args) { ... }:程序入口。
    • 创建 Scanner 对象 sc,用于读取用户输入。
    • 读取整数 k 和字符串 str
    • 调用 getResult 方法处理输入,并输出结果。
3. 处理逻辑的方法
  • public static String getResult(int k, String str) { ... }:定义处理逻辑的方法。
    • 步骤 1:将字符串 str"-" 分割成数组 sArr
      • 例如,输入 "2-5g-3-J",分割后得到 ["2", "5g", "3", "J"]
    • 步骤 2:获取第一个部分 first
      • 例如,first = "2"
    • 步骤 3:如果只有一个部分,直接返回 first
      • 例如,输入 "2",直接返回 "2"
    • 步骤 4:使用 StringBuilder 拼接剩余部分。
      • 例如,剩余部分为 ["5g", "3", "J"],拼接后得到 "5g3J"
    • 步骤 5:将拼接后的字符串转换为大写,并拆分为字符数组。
      • 例如,"5g3J" 转换为大写后得到 "5G3J",拆分为 ["5", "G", "3", "J"]
    • 步骤 6:每隔 k 个字符插入一个 "-"
      • 例如,k = 2,字符数组为 ["5", "G", "3", "J"]
        • 在第 0 个字符前插入 "-",得到 ["-5", "G", "3", "J"]
        • 在第 2 个字符前插入 "-",得到 ["-5", "G", "-3", "J"]
    • 步骤 7:返回最终结果。
      • 例如,first = "2",拼接后得到 "2-5G-3J"

代码细节解析

1. 输入处理
  • 使用 Scanner 类读取用户输入的两个值:
    • int k = sc.nextInt();:读取整数 k
    • String str = sc.next();:读取字符串 str
2. 字符串分割
  • 使用 split("-") 将字符串 str"-" 分割成数组 sArr
3. 处理剩余部分
  • 使用 StringBuilder 拼接剩余部分,避免频繁创建字符串对象。
  • 使用 toString()StringBuilder 转换为字符串。
  • 使用 toUpperCase() 将字符串转换为大写。
  • 使用 split("") 将字符串拆分为字符数组。
4. 插入分隔符
  • 使用 for 循环遍历字符数组,每隔 k 个字符插入一个 "-"
5. 返回结果
  • 使用 String.join("", tmp) 将字符数组拼接成字符串。
  • 将第一个部分 first 和插入分隔符后的字符串拼接,返回最终结果。

示例运行

输入
2
2-5g-3-J
处理步骤
  1. 将字符串 "2-5g-3-J""-" 分割成数组:
    [
    [“2”, “5g”, “3”, “J”]
    ]
  2. 获取第一个部分 first = "2"
  3. 将剩余部分拼接成一个字符串并转换为大写:
    [
    “5G3J”
    ]
  4. 每隔 k = 2 个字符插入一个 "-"
    • 在第 0 个字符前插入 "-",得到 ["-5", "G", "3", "J"]
    • 在第 2 个字符前插入 "-",得到 ["-5", "G", "-3", "J"]
  5. 返回最终结果:
    [
    “2-5G-3J”
    ]
输出
2-5G-3J

总结

  • 功能:将输入的字符串按规则格式化,每隔 k 个字符插入一个 "-"
  • 核心逻辑
    1. "-" 分割字符串。
    2. 将剩余部分拼接并转换为大写。
    3. 每隔 k 个字符插入 "-"
  • 适用场景:需要格式化字符串的场景,例如生成特定格式的编号或代码。
  • 注意事项
    • 输入字符串可能包含小写字母,需要转换为大写。
    • 如果输入字符串只有一个部分,直接返回该部分。

如果有其他问题,欢迎随时提问!

四、Python算法源码

以下是 Python 代码的详细中文注释和逻辑讲解


Python 代码

# 输入获取
k = int(input())  # 读取整数 k
s = input()       # 读取字符串 s


# 算法入口
def getResult():
    # 将字符串 s 按 "-" 分割成数组
    sArr = s.split("-")

    # 获取第一个部分
    first = sArr[0]

    # 如果只有一个部分,直接返回
    if len(sArr) == 1:
        return first

    # 将剩余部分拼接成一个字符串,并转换为大写
    tmp = list("".join(sArr[1:]).upper())

    # 每隔 k 个字符插入一个 "-"
    for i in range(len(tmp)):
        if i % k == 0:
            tmp[i] = "-" + tmp[i]

    # 返回最终结果
    return first + "".join(tmp)


# 算法调用
print(getResult())

代码逻辑讲解

1. 输入获取
  • k = int(input()):读取用户输入的整数 k
  • s = input():读取用户输入的字符串 s
2. 算法入口
  • def getResult()::定义处理逻辑的函数。
    • 步骤 1:将字符串 s"-" 分割成数组 sArr
      • 例如,输入 "2-5g-3-J",分割后得到 ["2", "5g", "3", "J"]
    • 步骤 2:获取第一个部分 first
      • 例如,first = "2"
    • 步骤 3:如果只有一个部分,直接返回 first
      • 例如,输入 "2",直接返回 "2"
    • 步骤 4:将剩余部分拼接成一个字符串,并转换为大写。
      • 例如,剩余部分为 ["5g", "3", "J"],拼接后得到 "5g3J",转换为大写后得到 "5G3J"
    • 步骤 5:每隔 k 个字符插入一个 "-"
      • 例如,k = 2,字符数组为 ["5", "G", "3", "J"]
        • 在第 0 个字符前插入 "-",得到 ["-5", "G", "3", "J"]
        • 在第 2 个字符前插入 "-",得到 ["-5", "G", "-3", "J"]
    • 步骤 6:返回最终结果。
      • 例如,first = "2",拼接后得到 "2-5G-3J"
3. 算法调用
  • print(getResult()):调用 getResult 函数并输出结果。

代码细节解析

1. 输入处理
  • 使用 input() 函数读取用户输入的两个值:
    • k = int(input()):读取整数 k
    • s = input():读取字符串 s
2. 字符串分割
  • 使用 split("-") 将字符串 s"-" 分割成数组 sArr
3. 处理剩余部分
  • 使用 "".join(sArr[1:]) 将剩余部分拼接成一个字符串。
  • 使用 upper() 将字符串转换为大写。
  • 使用 list() 将字符串拆分为字符数组。
4. 插入分隔符
  • 使用 for 循环遍历字符数组,每隔 k 个字符插入一个 "-"
5. 返回结果
  • 使用 "".join(tmp) 将字符数组拼接成字符串。
  • 将第一个部分 first 和插入分隔符后的字符串拼接,返回最终结果。

示例运行

输入
2
2-5g-3-J
处理步骤
  1. 将字符串 "2-5g-3-J""-" 分割成数组:
    [
    [“2”, “5g”, “3”, “J”]
    ]
  2. 获取第一个部分 first = "2"
  3. 将剩余部分拼接成一个字符串并转换为大写:
    [
    “5G3J”
    ]
  4. 每隔 k = 2 个字符插入一个 "-"
    • 在第 0 个字符前插入 "-",得到 ["-5", "G", "3", "J"]
    • 在第 2 个字符前插入 "-",得到 ["-5", "G", "-3", "J"]
  5. 返回最终结果:
    [
    “2-5G-3J”
    ]
输出
2-5G-3J

总结

  • 功能:将输入的字符串按规则格式化,每隔 k 个字符插入一个 "-"
  • 核心逻辑
    1. "-" 分割字符串。
    2. 将剩余部分拼接并转换为大写。
    3. 每隔 k 个字符插入 "-"
  • 适用场景:需要格式化字符串的场景,例如生成特定格式的编号或代码。
  • 注意事项
    • 输入字符串可能包含小写字母,需要转换为大写。
    • 如果输入字符串只有一个部分,直接返回该部分。

如果有其他问题,欢迎随时提问!

五、C/C++算法源码:

以下是 C++ 代码C 语言代码 的实现,并附带详细的中文注释和逻辑讲解。


C++ 代码

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

// 算法入口
string getResult(int k, string s) {
    // 将字符串 s 按 "-" 分割成数组
    vector<string> sArr;
    size_t pos = 0;
    while ((pos = s.find("-")) != string::npos) {
        sArr.push_back(s.substr(0, pos)); // 将分割的部分加入数组
        s.erase(0, pos + 1);              // 删除已处理的部分
    }
    sArr.push_back(s); // 加入最后一部分

    // 获取第一个部分
    string first = sArr[0];

    // 如果只有一个部分,直接返回
    if (sArr.size() == 1) {
        return first;
    }

    // 将剩余部分拼接成一个字符串,并转换为大写
    string remaining;
    for (size_t i = 1; i < sArr.size(); i++) {
        remaining += sArr[i];
    }
    transform(remaining.begin(), remaining.end(), remaining.begin(), ::toupper); // 转换为大写

    // 每隔 k 个字符插入一个 "-"
    string result = first;
    for (size_t i = 0; i < remaining.length(); i++) {
        if (i % k == 0) {
            result += "-"; // 插入分隔符
        }
        result += remaining[i];
    }

    return result;
}

int main() {
    // 输入获取
    int k;
    string s;
    cin >> k >> s;

    // 算法调用
    cout << getResult(k, s) << endl;

    return 0;
}

C 语言代码

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

// 算法入口
char* getResult(int k, char* s) {
    // 将字符串 s 按 "-" 分割成数组
    char* sArr[100]; // 假设最多分割 100 部分
    int count = 0;
    char* token = strtok(s, "-");
    while (token != NULL) {
        sArr[count++] = token; // 将分割的部分加入数组
        token = strtok(NULL, "-");
    }

    // 获取第一个部分
    char* first = sArr[0];

    // 如果只有一个部分,直接返回
    if (count == 1) {
        return first;
    }

    // 将剩余部分拼接成一个字符串,并转换为大写
    char remaining[1000] = ""; // 假设剩余部分长度不超过 1000
    for (int i = 1; i < count; i++) {
        strcat(remaining, sArr[i]);
    }
    for (int i = 0; remaining[i]; i++) {
        remaining[i] = toupper(remaining[i]); // 转换为大写
    }

    // 每隔 k 个字符插入一个 "-"
    char result[1000] = ""; // 假设结果长度不超过 1000
    strcat(result, first);  // 加入第一个部分
    for (int i = 0; i < strlen(remaining); i++) {
        if (i % k == 0) {
            strcat(result, "-"); // 插入分隔符
        }
        result[strlen(result)] = remaining[i]; // 加入字符
    }

    return strdup(result); // 返回动态分配的结果
}

int main() {
    // 输入获取
    int k;
    char s[1000]; // 假设输入字符串长度不超过 1000
    scanf("%d %s", &k, s);

    // 算法调用
    char* result = getResult(k, s);
    printf("%s\n", result);

    // 释放动态分配的内存
    free(result);

    return 0;
}

代码逻辑讲解

1. 输入获取
  • C++
    • 使用 cin 读取整数 k 和字符串 s
  • C
    • 使用 scanf 读取整数 k 和字符串 s
2. 字符串分割
  • C++
    • 使用 findsubstr 方法按 "-" 分割字符串,并将结果存入 vector<string>
  • C
    • 使用 strtok 函数按 "-" 分割字符串,并将结果存入字符指针数组 sArr
3. 处理剩余部分
  • C++
    • 使用 transform 函数将剩余部分转换为大写。
  • C
    • 使用 toupper 函数将剩余部分转换为大写。
4. 插入分隔符
  • C++
    • 使用 for 循环遍历剩余部分,每隔 k 个字符插入一个 "-"
  • C
    • 使用 for 循环遍历剩余部分,每隔 k 个字符插入一个 "-"
5. 返回结果
  • C++
    • 返回拼接后的字符串。
  • C
    • 使用 strdup 动态分配内存并返回结果。

示例运行

输入
2
2-5g-3-J
处理步骤
  1. 将字符串 "2-5g-3-J""-" 分割成数组:
    [
    [“2”, “5g”, “3”, “J”]
    ]
  2. 获取第一个部分 first = "2"
  3. 将剩余部分拼接成一个字符串并转换为大写:
    [
    “5G3J”
    ]
  4. 每隔 k = 2 个字符插入一个 "-"
    • 在第 0 个字符前插入 "-",得到 ["-5", "G", "3", "J"]
    • 在第 2 个字符前插入 "-",得到 ["-5", "G", "-3", "J"]
  5. 返回最终结果:
    [
    “2-5G-3J”
    ]
输出
2-5G-3J

总结

  • 功能:将输入的字符串按规则格式化,每隔 k 个字符插入一个 "-"
  • 核心逻辑
    1. "-" 分割字符串。
    2. 将剩余部分拼接并转换为大写。
    3. 每隔 k 个字符插入 "-"
  • 适用场景:需要格式化字符串的场景,例如生成特定格式的编号或代码。
  • 注意事项
    • 输入字符串可能包含小写字母,需要转换为大写。
    • 如果输入字符串只有一个部分,直接返回该部分。

如果有其他问题,欢迎随时提问!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的指纹密码锁

【摘要】 本设计是一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心同时结合ZFM-60指纹模块实现录取指纹并存储指纹数据的功能&#xff0c;并且通过HS12864-15C液晶显示比对流程及比对结果&#xff0c;该指纹电子密码锁通过直流继电器与发光二极管…

企业总部和分支通过GRE VPN互通

PC1可以ping通PC2 1、首先按照地址表配置ip地址 2、分别在AR1和AR3上配置nat 3、配置GRE a 创建tunnel接口&#xff0c;并选择tunnel协议为GRE&#xff0c;为隧道创建一个地址&#xff0c;用作互联 b 为隧道配置源地址或者源接口&#xff0c;这里选择源接口&#xff1b;再为…

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测

回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测 目录 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实MLR多元线性回归多输入单输出回归预测。 程序设计 完整代码&#xff1a;回…

计算机网络(五)运输层

5.1、运输层概述 概念 进程之间的通信 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时…

【PPTist】插入形状、插入图片、插入图表

一、插入形状 插入形状有两种情况&#xff0c;一种是插入固定的形状&#xff0c; 一种是插入自定义的形状。 插入固定的形状时&#xff0c;跟上一篇文章 绘制文本框 是一样一样的&#xff0c;都是调用的 mainStore.setCreatingElement() 方法&#xff0c;只不多传的类型不一…

Elasticsearch—索引库操作(增删查改)

Elasticsearch中Index就相当于MySQL中的数据库表 Mapping映射就类似表的结构。 因此我们想要向Elasticsearch中存储数据,必须先创建Index和Mapping 1. Mapping映射属性 Mapping是对索引库中文档的约束&#xff0c;常见的Mapping属性包括&#xff1a; type&#xff1a;字段数据类…

ROS Action接口

实现自主导航是使用Action接口的主要目的 在实际使用navigation导航系统的时候&#xff0c;机器人需要自主进行导航。不能每次都手动设置导航的目标点。所以需要编写程序代码来实现导航控制。这就需要使用到navigation的导航接口。Navigation的这个导航接口有好几个。Rose官方…

macOS 安装tomcat9

macOS 安装tomcat9 URL&#xff1a;https://tomcat.apache.org/download-90.cgi 解压之后放到指定目录 /Users/lanren/install/tomcat-9 自己取个名字就行 给权限&#xff1a; ① 先进行权限修改&#xff1a;终端输入sudo chmod 755 /Users/lanren/install/tomcat-9/bin/…

PatchTST:通道独立的、切片的 时序 Transformer

出处&#xff1a;ICLR 2023 代码链接&#xff1a;yuqinie98/PatchTST: An offical implementation of PatchTST: "A Time Series is Worth 64 Words: Long-term Forecasting with Transformers." (ICLR 2023) https://arxiv.org/abs/2211.14730 一 模型主要思想及…

QT c++ 样式 设置 按钮(QPushButton)的渐变色美化

上一篇文章中描述了标签的渐变色美化,本文描述按钮的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QPushButton&…

OPT: Open Pre-trained Transformer语言模型

摘要 大规模语言模型通常需要数十万计算日的训练时间&#xff0c;展现了在零样本和小样本学习中的显著能力。鉴于其计算成本之高&#xff0c;这些模型在没有大量资本投入的情况下难以复现。对于那些通过API提供的少数模型&#xff0c;研究者无法获取完整的模型权重&#xff0c…

力扣257(关于回溯算法)二叉树的所有路径

257. 二叉树的所有路径 一.问题描述 已解答 简单 相关标签 相关企业 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5…

《OpenCV计算机视觉实战项目》——银行卡号识别

文章目录 项目任务及要求项目实现思路项目实现及代码导入模块设置参数对模版图像中数字的定位处理银行卡的图像处理读取输入图像&#xff0c;预处理找到数字边框使用模版匹配&#xff0c;计算匹配得分 画出并打印结果 项目任务及要求 任务书&#xff1a; 要为某家银行设计一套…

Python学习(三)基础入门(数据类型、变量、条件判断、模式匹配、循环)

目录 一、第一个 Python 程序1.1 命令行模式、Python 交互模式1.2 Python的执行方式1.3 SyntaxError 语法错误1.4 输入和输出 二、Python 基础2.1 Python 语法2.2 数据类型1&#xff09;Number 数字2&#xff09;String 字符串3&#xff09;List 列表4&#xff09;Tuple 元组5&…

系统思考—要素连接

“改变你的思维&#xff0c;就能改变你的世界”— 诺曼皮尔 世界上的所有事物&#xff0c;都在规律的支配下&#xff0c;以系统的方式运转。显性的部分是我们能看到的“要素”&#xff0c;而那些看不见的力量&#xff0c;正是推动系统运作的要素之间的相互作用。更隐秘的&…

云原生(1)

作业&#xff1a; 1、shell 脚本写出检测 /tmp/size.log 文件如果存在显示它的内容&#xff0c;不存在则创建一个文件将创建时间写入。 2、写一个 shel1 脚本,实现批量添加 20个用户,用户名为user01-20,密码为user 后面跟5个随机字符。 3、编写个shel 脚本将/usr/local 日录下大…

【IO编程】文件IO的API

这篇文章在 文章&#xff1a;【文件I/O】文件持久化 的基础之上&#xff0c;更进一步的描述了文件IO中更多更详细的API详解。 文件IO 文件IO操作是必须要理解的环节之一&#xff0c;因为 s&#xff1a;套接字文件 &#xff1b;p: 管道文件 —> 都需要通过文件IO来进行打开…

【数据库】Unity 使用 Sqlite 数据库

1.找到需要三个 DLL Mono.Data.Sqlite.dllSystem.Data.dllsqlite3.dll 上面两个dll可在本地unity安装目录找到&#xff1a; C:\Program Files\Unity\Hub\Editor\2022.3.xxf1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32 下面dll可在sqlite官网下载到&#xff…

省级-农业科技创新(农业科技专利)数据(2010-2022年)-社科数据

省级-农业科技创新&#xff08;农业科技专利&#xff09;数据&#xff08;2010-2022年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90028570 https://download.csdn.net/download/paofuluolijiang/90028570 数据 年份、省份、农业科技专利数量…

51单片机——定时器中断(重点)

STC89C5X含有3个定时器&#xff1a;定时器0、定时器1、定时器2 注意&#xff1a;51系列单片机一定有基本的2个定时器&#xff08;定时器0和定时器1&#xff09;&#xff0c;但不全有3个中断&#xff0c;需要查看芯片手册&#xff0c;通常我们使用的是基本的2个定时器&#xff…