2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.17,华为机试

2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测

  • 🔮题目一描述:扑克牌消消乐
    • 输入描述
    • 输出描述
    • 样例一
    • 样例二
    • Limitation
    • 解题思路一:模拟,遇到连续3张相同牌号的卡牌,直接删除
    • 解题思路二:栈
    • 解题思路三:c++, java
  • ⚗️题目二描述:公司部门风险评估
    • 输入描述
    • 输出描述
    • 样例一
    • 样例二
    • 数据范围
    • Limitation
    • 解题思路一:dfs
    • 解题思路二:bfs
    • 解题思路三:java, c++
  • 🎀题目三描述:城市应急疏散
    • 输入格式
    • 输出描述
    • 样例
    • 数据范围
    • 解题思路一:Dijkstra
    • 解题思路二:0
    • 解题思路三:java, c++

🔮题目一描述:扑克牌消消乐

塔子哥最新沉迷某三消游戏,现在的他已经是这方面的大神。你太想进步了,找到了塔子哥并求他传授秘籍。他决定用一个游戏测试一下你的功底。

塔子哥从一副扑克牌中随机抽取n张牌组成一个序列,规定:连续3张相同牌号的卡牌可以消除,剩余卡牌按照当前顺序重新合并成新的序列后继续消除,例如序列 01112 在消除 111 之后,余下 02,重复以上步骤直到无法消除,请你完成这个游戏,输出结束后剩余的卡牌序列。

注:存在连续4张相同牌号的情况,消除后剩余一张。

输入描述

第一行输入一个整数n,表示抽出扑克牌的数量。其中 1 ≤ n ≤ 52 1 \le n \le 52 1n52

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

输出描述

输出一个字符串,表示最终的卡牌序列,卡牌号以空格分隔。

当所有扑克牌都被消除,输出0

样例一

输入

10
6 2 3 3 3 2 2 2 7 7 7

输出

6 2

样例二

输入

6 
5 A A A 5 5

输出

0

Limitation

1s, 1024KiB for each test case.

OJ链接:
https://codefun2000.com/p/P1827

解题思路一:模拟,遇到连续3张相同牌号的卡牌,直接删除

n = int(input())
strs = list(map(str, input().split()))i = 0
while i < len(strs):if i + 2 < len(strs):if strs[i] == strs[i + 1] and strs[i + 1] == strs[i + 2]:strs = strs[:i] + strs[i+3:]if i > 0:i -= 1continuei += 1else:break
if len(strs) == 0:print(0)
else:for s in strs:print(s, end = ' ')

时间复杂度:O(n) 一次遍历
空间复杂度:O(1) 输出答案不算

解题思路二:栈

n = int(input())
stack = []
a = input().split()
for i in a:if len(stack) < 2:stack.append(i)else:if stack[-1] == i and stack[-2] == i:stack.pop(-1)stack.pop(-1)else:stack.append(i)print(' '.join(stack))

时间复杂度:O(n)
空间复杂度:O(1)

解题思路三:c++, java

#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
vector<char>a;
for(int i=0;i<n;i++){char c;cin>>c;a.push_back(c);
}
while(a.size()>=3){int flag=-1;for(int i=0;i<a.size()-2;i++){if(a[i]==a[i+1]&&a[i]==a[i+2]){flag=i;break;}}if(flag==-1)break;a.erase(a.begin()+flag,a.begin()+flag+3);
}
for(int i=0;i<a.size();i++){cout<<a[i];if(i!=a.size()-1)cout<<" ";
}return 0;
}# java
import java.util.Scanner;
import java.util.Stack;public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);String a = s.nextLine();int n = Integer.parseInt(a);String b = s.nextLine();String[] xulie = b.split(" ");Stack<String> stack = new Stack<>();Stack<Integer> count = new Stack<>();for (int i = 0; i < xulie.length; i++) {if (stack.isEmpty()) {stack.push(xulie[i]);count.push(1);continue;}if (stack.peek().equals(xulie[i])) {stack.push(xulie[i]);count.push(count.peek() + 1);if (count.peek() == 3){stack.pop();stack.pop();stack.pop();count.pop();count.pop();count.pop();}continue;}if (!stack.peek().equals(xulie[i])) {stack.push(xulie[i]);count.push(1);}}if (stack.isEmpty()) {System.out.print("0");return;}String[] result = new String[stack.size()];int i = 0;while (!stack.isEmpty()) {result[i] = stack.pop();i++;}for (int i1 = result.length - 1; i1 >= 0; i1--) {System.out.print(result[i1]);if (i1 != 0){System.out.print(" ");}}}
}

时间复杂度:O(n)
空间复杂度:O(1)

⚗️题目二描述:公司部门风险评估

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

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

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

输入描述

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

接下来 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表示严重问题,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。

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

输出描述

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

样例一

输入

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

解释

(a * 0 2)表示节点a有2个严重问题,*表示无父节点,即a为云服务。(b a 1 5)表示节点b有5个一般问题,b的父节点是a。可以看出,该样例有3个云服务a、f、h。云服务a的子节点有b、c、d、e,严重问题个数为2+3+0+1+2=82+3+0+1+2=8,一般问题个数为2+5+3+3+0=132+5+3+3+0=13,DI值=8∗5+13∗2=66>阈值40,故云服务a是风险云服务;云服务f严重问题个数为8+0=88+0=8,一般问题个数为10+2=1210+2=12,DI值=8∗5+12∗2=64>阈值40,故云服务f也是风险云服务;云服务h严重问题个数为44,一般问题个数为00,DI值=4∗5+0∗2=20<=阈值40,故云服务h不是风险云服务;因此该样例有2个风险云服务。

样例二

输入

50 10 
b a 1 5 
a * 0 2 
b a 0 3 
c a 1 3 
d a 0 1 
a * 1 2 
d a 1 3 
e b 0 2 
f b 1 1 
g c 1 2

输出

1

数据范围

  • 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。

Limitation

1s, 1024KiB for each test case.

OJ链接:
https://codefun2000.com/p/P1828

解题思路一:dfs

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

具体步骤如下:

  1. 建立部门之间的父子关系,使用邻接表或者邻接矩阵来存储。
  2. 对于每个部门,初始化其严重问题数和一般问题数。
  3. 从叶子节点开始,通过 DFS 或 BFS 遍历整棵树,对于每个部门:
    • 将其子部门的严重问题数和一般问题数累加到当前部门上。
    • 计算当前部门的风险值,并判断是否超过阈值,如果超过则将风险部门数量加 1。
  4. 输出风险部门的数量。
from collections import defaultdict
M, N = map(int, input().split())
graph = defaultdict(list) # 邻接表,记录子节点
risks0 = defaultdict(int) # 严重问题
risks1 = defaultdict(int) # 一般问题roots = set()
for _ in range(N):node, parent, level, num = input().split()num = int(num)if parent == '*':roots.add(node)else:graph[parent].append(node)if level == '0':risks0[node] = numelse:risks1[node] = numdef dfs(node):risk0, risk1 = risks0[node], risks1[node]for ch in graph[node]:ch_risk0, ch_risk1 = dfs(ch)risk0 += ch_risk0risk1 += ch_risk1return risk0, risk1cnt = 0
for root in roots:risk0, risk1 = dfs(root)if 5 * risk0 + 2 * risk1 > M:cnt += 1
print(cnt)

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

解题思路二:bfs

from collections import defaultdict, deque
M, N = map(int, input().split())
graph = defaultdict(list) # 邻接表,记录子节点
risks0 = defaultdict(int) # 严重问题
risks1 = defaultdict(int) # 一般问题roots = set()
for _ in range(N):node, parent, level, num = input().split()num = int(num)if parent == '*':roots.add(node)else:graph[parent].append(node)if level == '0':risks0[node] = numelse:risks1[node] = numdef bfs(node):risk0, risk1 = risks0[node], risks1[node]queue = deque([node])while queue:node = queue.pop()for ch in graph[node]:queue.append(ch)ch_risk0, ch_risk1 = risks0[ch], risks1[ch]risk0 += ch_risk0risk1 += ch_risk1return risk0, risk1cnt = 0
for root in roots:risk0, risk1 = bfs(root)if 5 * risk0 + 2 * risk1 > M:cnt += 1
print(cnt)

时间复杂度:O(n)
空间复杂度:O(n)

解题思路三:java, c++

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};}
}#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;
}

时间复杂度:O(n)
空间复杂度:O(n)

🎀题目三描述:城市应急疏散

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

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

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

输入格式

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

接下来 n行,每行包含 n个整数,表示矩阵 dist。

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

最后两行包含两个整数 x 和 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

OJ链接:
https://codefun2000.com/p/P1829

解题思路一:Dijkstra

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

具体步骤如下:

  1. 使用 Dijkstra 算法求出事故区域到其他所有区域的最短路径长度,记为 d[i]。
  2. 将区域按照 (d[i], i, cap[i]) 的顺序从小到大排序,其中 d[i] 为最短路径长度,cap[i] 为剩余容量,i 为区域编号。
  3. 依次选择排序后的区域作为疏散目的地,直到选择的区域剩余容量之和不小于需要疏散的人数为止。
  4. 输出选择的疏散区域编号。
import heapqn = int(input())
dist = [list(map(int, input().split())) for _ in range(n)]
cap = list(map(int, input().split()))
x = int(input())
p = int(input())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], i, cap[i]) for i in range(n) if i != x])ans = []
total_cap = 0
for _, i, c in regions:if total_cap >= p:breakans.append(i)total_cap += c
print(*ans)

时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)

解题思路二:0


时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)

解题思路三:java, c++

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], i, cap[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[1]);totalCap += region[2];}for (int i = 0; i < ans.size(); i++) {System.out.print(ans.get(i));if (i < ans.size() - 1) {System.out.print(" ");}}}
}#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], i, cap[i]);}}sort(regions.begin(), regions.end());vector<int> ans;int total_cap = 0;for (auto [di, i, ci] : 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;
}

时间复杂度:O(n2)其中 n 为区域的数量。
空间复杂度:O(n2)


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

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

相关文章

【notepad++】使用

1 notepad 下载路径 https://notepad-plus.en.softonic.com/download 2 设置护眼模式 . 设置——语言格式设置——前景色——黑色 . 背景色——RGB &#xff1a;199 237 204 . 勾选“使用全局背景色”、“使用全局前景色” . 保存并关闭

2009-2022年上市公司华证ESG评级评分数据(含细分项)

2009-2022年上市公司华证ESG评级评分数据&#xff08;含细分项&#xff09; 1、时间&#xff1a;2009-2022年 2、来源&#xff1a;华证ESG 3、指标&#xff1a;证券代码、证券简称、综合评级、年度、综合得分、E评级、E得分、S评级、S得分、G评级、G得分 4、范围&#xff1…

PXE 批量安装部署

目录 一、PEX批量部署优点 二、PXE&#xff1a;预启动执行环境 三、搭建PXE远程服务器 要想全自动安装 接下来请看步骤&#xff1a; 一、PEX批量部署优点 规模化&#xff1a;同时装配多台服务器自动化&#xff1a;安装系统 配置各种服务远程实现&#xff1a;不需要光盘&…

Buuctf-Misc题目练习

打开后是一个gif动图&#xff0c;可以使用stegsolve工具进行逐帧看。 File Format:文件格式 Data Extract:数据提取 Steregram Solve:立体试图 可以左右控制偏移 Frame Browser:帧浏览器 Image Combiner:拼图&#xff0c;图片拼接 所以可以知道我们要选这个Frame Browser …

SQL查询语句(二)逻辑运算关键字

上一篇文章中我们提到了条件查询除了一些简单的数学符号之外&#xff0c;还有一些用于条件判断的关键字&#xff0c;如逻辑判断 关键字AND,OR,NOT和范围查找关键字BETWEEN,IN等&#xff1b;下面我们来介绍一些这些关键字的用法以及他们所表达的含义。 目录 逻辑运算关键字 AND…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作&#xff08;操作user表&#xff09; 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类&#xff0c;比如加密…

基于Springboot 的 Excel表格的导入导出

首先 &#xff0c;引入相关依赖EasyPOI <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 编写实体类&#xff1a; Data AllArgs…

产品需求文档怎么写?超详细的产品需求文档PRD模板来了!

产品需求文档怎么写&#xff1f;如何写一份简洁明了、外行人看了就能秒懂的产品需求文档呢&#xff1f;今天这篇文章&#xff0c;就来和大家分享如何编写一份高质量的产品需求文档 PRD&#xff01; 下图是来自 boardmix 模板社区的「产品需求文档」模板&#xff0c;它给出了一…

2024.05.07作业

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//窗口相关设置this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWindowTitle…

C++变量的作用域与存储类型

一 变量的作用域和存储类型 1 变量的作用域(Scope) 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(Local Variable)和全局变量(Global Variable) 1&#xff09;局部变量(Local Variable) 在语句块内定义的变量 形参也是局部变量 特点&#xff1a; 生存期是…

用vim或gvim编辑程序

vim其实不难使用&#xff0c;学习一下就好了。简单功能很快学会。它有三种模式&#xff1a;命令模式&#xff0c;编辑模式&#xff0c;视模式。打开时在命令模式。在命令模式下按 i 进入编辑模式&#xff0c;在编辑模式下按<Esc>键退出编辑模式。在命令模式按 :wq 保存文…

Linux —— 信号(3)

Linux —— 信号&#xff08;3&#xff09; Core dump为什么core默认是被关闭的阻塞信号信号其他相关常见概念信号递达信号未决信号阻塞两者的区别信号的结构 信号集操作函数一个简单使用例子sigpending的使用例子 我们今天接着来了解信号&#xff1a; Core dump 大家不知道有…

Linux网络-PXE高效批量网络装机(命令+截图详细版)

目录 一.部署PXE远程安装服务 1.PXE概述 1.1.PXE批量部署的优点 1.2.要搭建PXE网络体系的前提条件 2.搭建PXE远程安装服务器 2.1.修改相关网络配置&#xff08;仅主机模式&#xff09; 2.2.关闭防火墙&#xff08;老规矩&#xff09; 2.3.保证挂载上 2.4.准备好配置文…

呆滞物料规范管理了,问题就好办了

对于制造企业来说&#xff0c;库存是生存和发展的重要保障&#xff0c;过高的库存会占用企业大量的资金和管理成本&#xff0c;影响企业的正常生产&#xff0c;然而多数中小制造企业还在用人工干预管理&#xff0c;如何控制呆滞物料成为仓储管理的一大难题。 什么是呆滞料 呆滞…

为什么不建议在 Vue <style> 中使用 scoped?

前言 亲爱的小伙伴&#xff0c;你好&#xff01;我是 嘟老板。我们使用 Vue 开发页面时&#xff0c;经常需要在 <style> 标签下编写样式。不知你是否留意&#xff0c;在 <style> 标签下有一个属性经常出现 - scoped。你知道它起到什么作用吗&#xff1f;原理是怎样…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

PE文件(四)FileBuffer-ImageBuffer作业

C语言实现如下功能 2.编写一个函数&#xff0c;将RVA的值转换成FOA 将文件加载到内存时&#xff0c;已知一个数据在内存中的地址&#xff0c;将此地址转化成文件在硬盘上时的相对于文件起始地址的文件偏移地址。即将虚拟内存偏移地址转换成文件偏移地址。 说明&#xff1a;这里…

记一次DNS故障导致用户无法充值的问题(上)

背景&#xff1a; 刚刚过去了五一劳动节&#xff0c;回来后一上班接到客服运营团队反馈的节日期间的问题&#xff0c;反馈有部分用户无法充值。拿到的反馈资料有&#xff1a; 无法充值操作视频、问题时间、手机机型、手机网络情况。 1、从视频中看到用户点击支付后没有任何反…

Linux系统使用Docker安装青龙面板并实现远程访问管理面板

文章目录 一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用。本教程使用Docker部署青龙&#xff0c;如何安装Docker详见&#xff1a; 二、安装青龙面板三、映射本地部署的青龙面板至公网四、使用固定公网地址访问本地部署的青龙面板 青龙…

聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?

前言 本质上&#xff0c;中间件类也是一个普通的 .NET 类&#xff0c;它不需要继承任何父类或者实现任何接口。 但是有几个约定&#xff1a; 需要有一个构造方法构造方法至少要有一个 RequestDelegate 类型的参数&#xff0c;用来指向下一个中间件。需要定义一个名字为 Invo…