【华为笔试题汇总】2024-04-17-华为春招笔试题-三语言题解(Python/Java/Cpp)

news2025/1/19 22:10:49

🍭 大家好这里是KK爱Coding ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为近期的春秋招笔试题汇总~

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

文章目录

    • 🔮01.扑克牌消消乐
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • ⚗️02.公司部门风险评估
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🎀 03.城市应急疏散
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 写在最后
    • 📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

本次华为的笔试不算难哦,虽然考试的时候题目长了点,但总体代码和思维量都不大

🔮01.扑克牌消消乐

题目描述

K小姐最近沉迷于一款扑克牌消除游戏。游戏规则如下:从一副扑克牌中随机抽取 n n n 张牌组成一个序列,如果有连续的 3 3 3 张相同牌号的卡牌,则这 3 3 3 张卡牌可以消除。消除后,剩余卡牌按照当前顺序重新合并成新的序列,继续寻找可以消除的卡牌组合,直到无法再消除为止。

需要注意的是,如果存在连续的 4 4 4 张相同牌号的卡牌,在消除后会剩余 1 1 1 张该牌号的卡牌。

现在,K小姐想知道最后剩余的卡牌序列是什么样的,你能帮助她吗?

输入格式

第一行包含一个正整数 n n n 1 ≤ n ≤ 52 1 \leq n \leq 52 1n52),表示抽取的卡牌数量。

第二行包含 n n n 个以空格分隔的字符串,表示抽取的卡牌序列,卡牌号仅包含 2 2 2- 10 10 10 A A A J J J Q Q Q K K K

输出格式

输出一个字符串,表示最终剩余的卡牌号序列,卡牌号之间以空格分隔。如果最终没有卡牌剩余,则输出 0 0 0

样例输入

10
3 A 2 2 2 A A 7 7 7

样例输出

3

数据范围

  • 1 ≤ n ≤ 52 1 \leq n \leq 52 1n52
  • 卡牌号仅包含 2 2 2- 10 10 10 A A A J J J Q Q Q K K K

题解

这是一道模拟题,可以使用栈来模拟卡牌的消除过程。具体步骤如下:

  1. 将输入的卡牌序列依次放入栈中。
  2. 在放入每张卡牌时,检查栈顶是否存在与当前卡牌相同的牌号。
    • 如果存在,则统计相同牌号的数量,直到栈顶的卡牌牌号不同或栈为空为止。
    • 如果相同牌号的数量等于 3 3 3,则将这 3 3 3 张卡牌从栈中弹出。
  3. 重复步骤 2 2 2,直到所有卡牌都放入栈中。
  4. 最后,将栈中剩余的卡牌依次输出,如果栈为空,则输出 0 0 0

时间复杂度为 O ( n ) O(n) O(n),空间复杂度为 O ( n ) O(n) O(n)

参考代码

  • Python
n = int(input())
cards = input().split()
stack = []

for card in cards:
    stack.append(card)
    while len(stack) >= 3 and stack[-1] == stack[-2] == stack[-3]:
        for _ in range(3):
            stack.pop()

if not stack:
    print(0)
else:
    print(' '.join(stack))
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String[] cards = new String[n];
        for (int i = 0; i < n; i++) {
            cards[i] = sc.next();
        }
        
        List<String> stack = new ArrayList<>();
        for (String card : cards) {
            stack.add(card);
            int size = stack.size();
            while (size >= 3 && stack.get(size - 1).equals(stack.get(size - 2)) && stack.get(size - 2).equals(stack.get(size - 3))) {
                for (int i = 0; i < 3; i++) {
                    stack.remove(size - 1);
                    size--;
                }
            }
        }
        
        if (stack.isEmpty()) {
            System.out.println(0);
        } else {
            System.out.println(String.join(" ", stack));
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<string> cards(n);
    for (int i = 0; i < n; i++) {
        cin >> cards[i];
    }
    
    vector<string> stack;
    for (string card : cards) {
        stack.push_back(card);
        int size = stack.size();
        while (size >= 3 && stack[size - 1] == stack[size - 2] && stack[size - 2] == stack[size - 3]) {
            for (int i = 0; i < 3; i++) {
                stack.pop_back();
                size--;
            }
        }
    }
    
    if (stack.empty()) {
        cout << 0 << endl;
    } else {
        for (int i = 0; i < stack.size(); i++) {
            cout << stack[i] << " \n"[i == stack.size() - 1];
        }
    }
    
    return 0;
}

⚗️02.公司部门风险评估

题目描述

LYA 是一家大型科技公司的风险评估师。公司的部门结构可以看作一棵树,每个部门在评估前都有一些尚未解决的问题。部门的风险值可以用来评估该部门是否存在风险,风险值的计算公式为: 风险值 = 5 × 严重问题数 + 2 × 一般问题数 风险值 = 5 \times 严重问题数 + 2 \times 一般问题数 风险值=5×严重问题数+2×一般问题数

其中,每个部门的不同级别问题数量需要将该部门及其下属部门的相应级别问题数量求和。当部门的风险值小于等于给定的阈值时,该部门被认为是安全的;否则,该部门被视为风险部门,需要进一步整改。

现在给出公司的部门结构以及各部门的问题数量,请你帮助 LYA 计算出风险部门的数量。

输入格式

第一行包含两个正整数 M M M N N N 1 ≤ M ≤ 100000 1 \leq M \leq 100000 1M100000 1 ≤ N ≤ 1000 1 \leq N \leq 1000 1N1000),分别表示风险阈值和部门的数量。

接下来 N N N 行,每行包含四个字段,用空格分隔:

  • 第一个字段为部门名称 A i A_i Ai
  • 第二个字段为 A i A_i Ai 的上级部门名称 B i B_i Bi,如果 A i A_i Ai 为公司的最高层部门,则 B i B_i Bi* 表示;
  • 第三个字段为问题级别 C i C_i Ci C i ∈ { 0 , 1 } C_i \in \{0, 1\} Ci{0,1},其中 0 0 0 表示严重问题, 1 1 1 表示一般问题);
  • 第四个字段为该部门该级别的问题数量 D i D_i Di 1 ≤ D i ≤ 1000 1 \leq D_i \leq 1000 1Di1000)。

其中, A i A_i Ai B i B_i Bi 为由小写英文字母组成的字符串,长度不超过 5 5 5

输入保证部门结构为一棵树,不会出现环的情况。

输出格式

输出一个整数,表示风险部门的数量。

样例输入

40 12
a * 0 2
a * 1 2
b a 0 3
b a 1 5
c a 1 3
d a 0 1
d a 1 3
e b 0 2
f * 0 8
f * 1 10
g f 1 2
h * 0 4

样例输出

2

数据范围

  • 1 ≤ M ≤ 100000 1 \leq M \leq 100000 1M100000
  • 1 ≤ N ≤ 1000 1 \leq N \leq 1000 1N1000
  • 1 ≤ D i ≤ 1000 1 \leq D_i \leq 1000 1Di1000
  • A i A_i Ai B i B_i Bi 为由小写英文字母组成的字符串,长度不超过 5 5 5

题解

本题可以使用树形 DP 的思想来解决。可以从叶子节点开始,自底向上计算每个部门的严重问题数和一般问题数,然后根据风险值的计算公式判断该部门是否为风险部门。

具体步骤如下:

  1. 建立部门之间的父子关系,使用邻接表或者邻接矩阵来存储。
  2. 对于每个部门,初始化其严重问题数和一般问题数。
  3. 从叶子节点开始,通过 DFS 或 BFS 遍历整棵树,对于每个部门:
    • 将其子部门的严重问题数和一般问题数累加到当前部门上。
    • 计算当前部门的风险值,并判断是否超过阈值,如果超过则将风险部门数量加 1 1 1
  4. 输出风险部门的数量。

时间复杂度为 O ( N ) O(N) O(N),空间复杂度为 O ( N ) O(N) O(N),其中 N N N 为部门的数量。

参考代码

  • Python
from collections import defaultdict

def dfs(dept):
    risk1, risk2 = risks1[dept], risks2[dept]
    for sub in graph[dept]:
        sub_risk1, sub_risk2 = dfs(sub)
        risk1 += sub_risk1
        risk2 += sub_risk2
    return risk1, risk2

m, n = map(int, input().split())
graph = defaultdict(list)
risks1 = defaultdict(int)
risks2 = defaultdict(int)

roots = set()
for _ in range(n):
    dept, parent, level, num = input().split()
    num = int(num)
    if parent == '*':
        roots.add(dept)
    else:
        graph[parent].append(dept)
    if level == '0':
        risks1[dept] = num
    else:
        risks2[dept] = num

cnt = 0
for root in roots:
    risk1, risk2 = dfs(root)
    if 5 * risk1 + 2 * risk2 > m:
        cnt += 1

print(cnt)
  • Java
import java.util.*;

public class Main {
    static Map<String, List<String>> graph = new HashMap<>();
    static Map<String, Integer> risks1 = new HashMap<>();
    static Map<String, Integer> risks2 = new HashMap<>();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        sc.nextLine();

        Set<String> roots = new HashSet<>();
        for (int i = 0; i < n; i++) {
            String[] input = sc.nextLine().split(" ");
            String dept = input[0];
            String parent = input[1];
            int level = Integer.parseInt(input[2]);
            int num = Integer.parseInt(input[3]);

            if (parent.equals("*")) {
                roots.add(dept);
            } else {
                graph.computeIfAbsent(parent, k -> new ArrayList<>()).add(dept);
            }

            if (level == 0) {
                risks1.put(dept, num);
            } else {
                risks2.put(dept, num);
            }
        }

        int cnt = 0;
        for (String root : roots) {
            int[] risks = dfs(root);
            if (5 * risks[0] + 2 * risks[1] > m) {
                cnt++;
            }
        }

        System.out.println(cnt);
    }

    private static int[] dfs(String dept) {
        int risk1 = risks1.getOrDefault(dept, 0);
        int risk2 = risks2.getOrDefault(dept, 0);

        for (String sub : graph.getOrDefault(dept, new ArrayList<>())) {
            int[] subRisks = dfs(sub);
            risk1 += subRisks[0];
            risk2 += subRisks[1];
        }

        return new int[]{risk1, risk2};
    }
}
  • Cpp
#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <string>

using namespace std;

unordered_map<string, vector<string>> graph;
unordered_map<string, int> risks1;
unordered_map<string, int> risks2;

pair<int, int> dfs(const string& dept) {
    int risk1 = risks1[dept];
    int risk2 = risks2[dept];

    for (const string& sub : graph[dept]) {
        auto subRisks = dfs(sub);
        risk1 += subRisks.first;
        risk2 += subRisks.second;
    }

    return {risk1, risk2};
}

int main() {
    int m, n;
    cin >> m >> n;

    unordered_set<string> roots;
    for (int i = 0; i < n; i++) {
        string dept, parent;
        int level, num;
        cin >> dept >> parent >> level >> num;

        if (parent == "*") {
            roots.insert(dept);
        } else {
            graph[parent].push_back(dept);
        }

        if (level == 0) {
            risks1[dept] = num;
        } else {
            risks2[dept] = num;
        }
    }

    int cnt = 0;
    for (const string& root : roots) {
        auto risks = dfs(root);
        if (5 * risks.first + 2 * risks.second > m) {
            cnt++;
        }
    }

    cout << cnt << endl;

    return 0;
}

🎀 03.城市应急疏散

题目描述

LYA 是一名城市应急管理专家,她负责制定城市在发生重大事故时的疏散计划。城市由 n n n 个区域组成,每个区域之间都有道路相连。当某个区域发生事故需要疏散时,LYA 需要选择一个或多个安全区域作为疏散目的地,并确保疏散路径的总长度最短。

给定一个 n × n n \times n n×n 的矩阵 d i s t dist dist,其中 d i s t [ i ] [ j ] dist[i][j] dist[i][j] 表示区域 i i i 到区域 j j j 的道路长度,如果 d i s t [ i ] [ j ] = − 1 dist[i][j] = -1 dist[i][j]=1,则表示区域 i i i 和区域 j j j 之间没有直接相连的道路。另外,每个区域还有一个剩余容量 c a p [ i ] cap[i] cap[i],表示该区域最多可以容纳的人数。

当某个区域 x x x 发生事故需要疏散人数为 p p p 时,请你帮助 LYA 选择疏散区域,使得疏散路径的总长度最短,并且疏散区域的剩余容量之和不小于 p p p。如果有多个疏散区域到事故区域的最短路径长度相同,则优先选择编号较小的区域。

输入格式

第一行包含一个正整数 n n n,表示区域的数量。

接下来 n n n 行,每行包含 n n n 个整数,表示矩阵 d i s t dist dist

接下来一行包含 n n n 个整数,表示每个区域的剩余容量 c a p [ i ] cap[i] cap[i]

最后一行包含两个整数 x x x p p p,分别表示发生事故的区域编号和需要疏散的人数。

输出格式

输出一行,包含若干个整数,表示选择的疏散区域编号。如果有多个疏散区域到事故区域的最短路径长度相同,则按照编号从小到大的顺序输出。

样例输入

4
-1 5 -1 8
5 -1 1 3
-1 1 -1 4
8 3 4 -1
10 20 15 25
2 12

样例输出

1

数据范围

  • 2 ≤ n ≤ 1 0 4 2 \leq n \leq 10^4 2n104
  • − 1 ≤ d i s t [ i ] [ j ] ≤ 1000 -1 \leq dist[i][j] \leq 1000 1dist[i][j]1000
  • 1 ≤ c a p [ i ] ≤ 100 1 \leq cap[i] \leq 100 1cap[i]100
  • 0 ≤ x < n 0 \leq x < n 0x<n
  • 0 < p ≤ 1000 0 < p \leq 1000 0<p1000

题解

本题可以使用 Dijkstra 算法求出事故区域到其他所有区域的最短路径长度,然后将区域按照最短路径长度从小到大排序,依次选择区域作为疏散目的地,直到选择的区域剩余容量之和不小于需要疏散的人数为止。

具体步骤如下:

  1. 使用 Dijkstra 算法求出事故区域到其他所有区域的最短路径长度,记为 d [ i ] d[i] d[i]
  2. 将区域按照 ( d [ i ] , c a p [ i ] , i ) (d[i], cap[i], i) (d[i],cap[i],i) 的顺序从小到大排序,其中 d [ i ] d[i] d[i] 为最短路径长度, c a p [ i ] cap[i] cap[i] 为剩余容量, i i i 为区域编号。
  3. 依次选择排序后的区域作为疏散目的地,直到选择的区域剩余容量之和不小于需要疏散的人数为止。
  4. 输出选择的疏散区域编号。

时间复杂度 O ( n 2 + n log ⁡ n ) O(n^2 + n \log n) O(n2+nlogn),空间复杂度 O ( n 2 ) O(n^2) O(n2)。其中 n n n 为区域的数量。

参考代码

  • Python
import heapq

n = int(input())
dist = [list(map(int, input().split())) for _ in range(n)]
cap = list(map(int, input().split()))
x, p = map(int, input().split())

for i in range(n):
    for j in range(n):
        if dist[i][j] == -1:
            dist[i][j] = float('inf')

d = [float('inf')] * n
d[x] = 0
q = [(0, x)]

while q:
    _, u = heapq.heappop(q)
    for v in range(n):
        if d[u] + dist[u][v] < d[v]:
            d[v] = d[u] + dist[u][v]
            heapq.heappush(q, (d[v], v))

regions = sorted([(d[i], cap[i], i) for i in range(n) if i != x])

ans = []
total_cap = 0
for _, c, i in regions:
    if total_cap >= p:
        break
    ans.append(i)
    total_cap += c

print(*ans)
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] dist = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                dist[i][j] = sc.nextInt();
                if (dist[i][j] == -1) {
                    dist[i][j] = Integer.MAX_VALUE;
                }
            }
        }
        int[] cap = new int[n];
        for (int i = 0; i < n; i++) {
            cap[i] = sc.nextInt();
        }
        int x = sc.nextInt();
        int p = sc.nextInt();

        int[] d = new int[n];
        Arrays.fill(d, Integer.MAX_VALUE);
        d[x] = 0;
        PriorityQueue<int[]> q = new PriorityQueue<>((a, b) -> a[0] - b[0]);
        q.offer(new int[]{0, x});

        while (!q.isEmpty()) {
            int[] curr = q.poll();
            int u = curr[1];
            for (int v = 0; v < n; v++) {
                if (d[u] + dist[u][v] < d[v]) {
                    d[v] = d[u] + dist[u][v];
                    q.offer(new int[]{d[v], v});
                }
            }
        }

        List<int[]> regions = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (i != x) {
                regions.add(new int[]{d[i], cap[i], i});
            }
        }
        regions.sort((a, b) -> {
            if (a[0] != b[0]) {
                return a[0] - b[0];
            }
            if (a[1] != b[1]) {
                return b[1] - a[1];
            }
            return a[2] - b[2];
        });

        List<Integer> ans = new ArrayList<>();
        int totalCap = 0;
        for (int[] region : regions) {
            if (totalCap >= p) {
                break;
            }
            ans.add(region[2]);
            totalCap += region[1];
        }

        for (int i = 0; i < ans.size(); i++) {
            System.out.print(ans.get(i));
            if (i < ans.size() - 1) {
                System.out.print(" ");
            }
        }
    }
}
  • Cpp
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

const int INF = 0x3f3f3f3f;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> dist(n, vector<int>(n));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> dist[i][j];
            if (dist[i][j] == -1) {
                dist[i][j] = INF;
            }
        }
    }
    vector<int> cap(n);
    for (int i = 0; i < n; i++) {
        cin >> cap[i];
    }
    int x, p;
    cin >> x >> p;

    vector<int> d(n, INF);
    d[x] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
    q.emplace(0, x);

    while (!q.empty()) {
        auto [du, u] = q.top();
        q.pop();
        if (du > d[u]) {
            continue;
        }
        for (int v = 0; v < n; v++) {
            if (d[u] + dist[u][v] < d[v]) {
                d[v] = d[u] + dist[u][v];
                q.emplace(d[v], v);
            }
        }
    }

    vector<tuple<int, int, int>> regions;
    for (int i = 0; i < n; i++) {
        if (i != x) {
            regions.emplace_back(d[i], cap[i], i);
        }
    }
    sort(regions.begin(), regions.end());

    vector<int> ans;
    int total_cap = 0;
    for (auto [di, ci, i] : regions) {
        if (total_cap >= p) {
            break;
        }
        ans.push_back(i);
        total_cap += ci;
    }

    for (int i = 0; i < ans.size(); i++) {
        cout << ans[i];
        if (i < ans.size() - 1) {
            cout << " ";
        }
    }
    cout << endl;

    return 0;
}

写在最后

📧 KK这边最近正在收集近一年互联网各厂的笔试题汇总,如果有需要的小伙伴可以关注后私信一下 KK领取,会在飞书进行同步的跟新。

在这里插入图片描述

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

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

相关文章

吴恩达2022机器学习专项课程(一) 第二周课程实验:特征工程和多项式回归(Lab_04)

目标 探索特征工程和多项式回归&#xff0c;使用线性回归来拟合非常复杂甚至非线性的函数。 1.为什么线性回归能拟合非线性函数&#xff1f; fxw*xb&#xff0c;属于线性回归的扩展&#xff0c;这个公式在数学中不属于线性&#xff0c;因为有x&#xff0c;而在机器学习中属于…

【云计算】云数据中心网络(六):私网连接

云数据中心网络&#xff08;六&#xff09;&#xff1a;私网连接 1.什么是私网连接2.私网连接的组成3.私网连接的优势4.私网连接的主要应用场景 前面讲到 VPC 网络具有隔离性&#xff0c;VPC 之间无法通信。当一个 VPC 中的终端需要访问部署在另一个 VPC 中的服务时&#xff0c…

江苏开放大学2024年春《测试技术 060245》作业3参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 单选题 1相关系数ρxy的取值范围处于( )之间。 A-1和0 B…

OpenCV基本图像处理操作(十一)——图像特征Sift算法

图像尺度空间 在一定的范围内&#xff0c;无论物体是大还是小&#xff0c;人眼都可以分辨出来&#xff0c;然而计算机要有相同的能力却很难&#xff0c;所以要让机器能够对物体在不同尺度下有一个统一的认知&#xff0c;就需要考虑图像在不同的尺度下都存在的特点。 尺度空间的…

WebGl/Three 粒子系统 人物破碎及还原运动

粒子 首先&#xff0c;加载模型&#xff0c;这是万千粒子的前身&#xff0c;模型对象由很多面构成&#xff0c;这些面又是由各个点构成的&#xff0c;所以可以将模型的几何体对象geometry赋给粒子对象&#xff0c;粒子物体用Points方式渲染 bloader.load("obj/female02/Fe…

斯坦福发布法律指令数据集LawInstruct,统一17个辖区24种语言

在法律领域&#xff0c;语言模型&#xff08;Language Models, LLMs&#xff09;的发展一直面临着独特的挑战。法律文本的复杂性、专业术语的广泛使用以及对精确性和可靠性的极高要求&#xff0c;使得法律领域的自然语言处理&#xff08;Natural Language Processing, NLP&…

新版周易运势风水测算 宝宝起名改名 公司吉凶测名 八字姻缘爱情算命预测 易经塔罗牌占卜

源码简介&#xff1a; 系统包含八字合婚、流年运势、宝宝起名、塔罗占卜、姓名配对、命中注定、星座运势、八字精批、桃花运姻缘、测终生运、十年大运详批、犯太岁化解、紫薇财运精批、取名改名、算姻缘、婚前合婚、算事业、算财运、姓名详批、塔罗爱情占卜&#xff08;三个月…

Python接口自动化 —— Web接口(2)

1.2.3 HTTP HTTP概念 Hyper Text Transfer Protocal超文本传输协议&#xff0c;基于tcp/ip通信协议来传递数据&#xff0c;属于应用层协议主要特点: 无连接: 每次连接只处理一个请求&#xff0c;服务器处理完请求并受到客户端应答后就断开连接媒体独立。 只要服务器和客…

web项目中jsp页面不识别el表达式

如果使用el表达式出现下图问题 ** 解决办法 ** 这是因为maven创建项目时&#xff0c;web.xml头部声明默认是2.3&#xff0c;这个默认jsp关闭el表达式 修改web.xml文件开头的web-app的版本 <?xml version"1.0" encoding"UTF-8"?> <web-app x…

gpt4.0人工智能网页版

在最新的AI基准测试中&#xff0c;OpenAI几天前刚刚发布的GPT-4-Turbo-2024-04-09版本&#xff0c;大幅超越了Claude3 Opus&#xff0c;重新夺回了全球第一的AI王座。 GPT-4-Turbo-2024-04-09版本是目前国内外最强的大模型&#xff0c;官网需要20美元每月才能使用&#xff0c;…

RUM 最佳实践-视觉稳定性的探索与实践

写在前面的话 在当今数字时代&#xff0c;网页的视觉稳定性对于提供良好的用户体验至关重要。其中一个衡量视觉稳定性的关键指标就是累积布局偏移&#xff08;Cumulative Layout Shift&#xff0c;简称 CLS&#xff09;。CLS 作为 Web Vitals 指标之一&#xff0c;它衡量的是网…

全球半导体排行:台积电登顶,中芯国际第24位

最新发布的《麦克莱恩报告》4月更新揭示了2023年全球前50大半导体供应商的最终排名情况&#xff0c;其中前25强名单尤为引人注目。台积电&#xff08;TSMC&#xff09;凭借强劲的市场表现和业务增长&#xff0c;成功超越其他竞争对手&#xff0c;跃居全球半导体供应商首位。与此…

资料总结分享:《全外显子测序数据的流程和原理》

1外显子与测序&#xff0c;生信流程 1.1 外显子是什么&#xff1f; 外显子是基因组中能够转录组出成熟RNA的部分。一个基因组中所有外显子的集合&#xff0c;即为外显子组。值得注意的是&#xff0c;通常所说的全外显子组测序&#xff0c;是指针对蛋白编码基因的外显子&#x…

独立开源版:零点城市社交电商v2.1.2.4

源码介绍 独立版&#xff1a;零点城市社交电商v2.1.2.4 新增首页新增多弹窗 注意&#xff1a;如果没有此完整程序勿下载 全开源解密版代码&#xff0c;后端完全开源&#xff0c;前端是VUE前端&#xff0c;可自行二开自己想要的功能。 独立版零点城市社交电商 小程序致力于…

gpt4和chatgpt的区别

模型规模和性能&#xff1a;GPT-4比GPT-3.5更大、更强大。GPT-4拥有更多的参数和更大的训练数据集&#xff0c;因此在各种任务上表现更出色&#xff0c;如语言理解、问题解答和推理能力等。多模态能力&#xff1a;GPT-4支持处理图像等多模态信息&#xff0c;而GPT-3.5主要处理文…

原生实现ajax

1 什么是ajax AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网…

雨伞-浅色脚本

渲染参考&#xff1a;明亮/干净/高级 静帧参考 解说 镜头时长 效果参考 中景画面展示3把竖着的浅色的伞 1s / 特写展示伞把手 1s 中景展示雨伞全貌 2s 微观镜头 缝线动画 3s 镜头旋转至伞面微观材质镜头&#xff0c;展现其多层结构 10s 微观镜头 水珠滑动在伞…

18.读取指定目录下的txt文档时,调用另外一个python文件

1.题目 遍历4K_phone和4K_VR目录下的所有txt文件&#xff0c;并将它们的内容合并到一个名为4k_decoding.txt的文件中。 但是&#xff0c;假设你有一个名为another_script.py的Python文件&#xff0c;你想在合并txt文件之前执行它生成要处理的txt文档。 最后统计完原始的txt文件…

python使用uiautomator2操作真机(华为Honor 10)

环境&#xff1a; python3.8.10&#xff0c;华为手机Honor 10(6G,64g)&#xff0c;版本android 9。 之前写过一篇文章&#xff1a; python使用uiautomator2操作真机_python uiautomator2 控制真机-CSDN博客 今天再拿另外一部手机测试。 一、将手机设置为开发者模式 1、设…

编程入门(三)【GPT工具的使用】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言背景了解GPT工具使用技巧GPT工具在学习和工作中的应用 前言 背景了解 2…