当前位置: 首页 > news >正文

【数据结构】第六周

目录

银行排队——队列

公共钥匙盒——队列

等值子串

KMP模式匹配

大整数相乘

最长公共子串


银行排队——队列

【问题描述】

我们大多都有在银行排队的经历,唉,那坑爹的排队啊!现在就让我们来算算我们这些客户平均需要等多久吧。
每天刚开始时银行会开m个窗口来为我们total个客户办理业务,当有客户需要办理业务时,先选择可以办理业务的窗口,如果有多个窗口可以办理业务就选择空闲时间最长的窗口,如果有多个窗口空闲的时间一样长,则选择序号小的窗口办理业务。假设我们每个人来到的时间和办理业务所需要的时间(为了简化问题,采用整数表示时间)都知道了。现在请你算算我们平均需要等待多久呢?请用顺序队列或链式队列来完成本题。

【输入形式】

有多组测试数据,每组数据开始有两个正整数m(<20)和total(<200),后面有total对整数,对应客户先后到来的时间以及办理业务所需的时间。

【输出形式】

平均等待的时间,保留两位小数。

【样例输入】

2 6 1 3 4 1 5 3 9 2 13 4 13 3
3 14 0 3 2 2 2 4 5 4 7 2 11 3 12 3 12 4 12 1 13 3 15 4 19 1 22 3 23 2
2 5 0 6 0 5 0 6 7 1 7 2

【样例输出】

0.00
0.29
1.20

【提示】 

题目中选择办理的窗口有三个状态,实际上从序号自小到大查找可以最早办理业务的窗口就已经满足上述三个状态了。若客户的到来时间相同,现实中并不知道该用户需要多久处理完任务,所以遵循先来的先服务原则。

【要求】

请用顺序队列或链式队列来完成,否则不得分。

20.0
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef struct people{int start;int time;
}people;typedef struct Q{int front,rear;people peo[100];
}Q;typedef struct work{int num;int start;int over;
}work;void ini(Q &q,int total)
{q.front=q.rear=0;for(int i=0;i<total;i++){int x,y;cin>>x>>y;q.peo[i].start=x;q.peo[i].time=y;q.rear++;}}people delet(Q &q)
{q.front++;return q.peo[q.front-1];
}
bool cmp(work a,work b)
{if(a.over!=b.over)return a.over<b.over;elsereturn a.num<b.num;
}
int main()
{int m,total;  //2 6 1 3 4 1 5 3 9 2 13 4 13 3while(cin>>m>>total)  //m=2 total=6{Q q;int sum=0;ini(q,total);work w[m];for(int i=0;i<m;i++)//窗口初始化 0 0 0;1 0 0; 2 0 0 {w[i].num=i;w[i].start=0;w[i].over=0;}for(int i=0;i<total;i++)//开始处理事件 {sort(w,w+m,cmp);people cur=delet(q);//判断cur的开始与窗口    //队首事件的处理,出队表示处理它if(cur.start>=w[0].over) //新事件的开始事件晚于最小窗口的结束时间 {w[0].start=cur.start;w[0].over=cur.start+cur.time;} else{sum+=w[0].over-cur.start;//15-12w[0].start=w[0].over;//15w[0].over=w[0].over+cur.time;//15+3} //更新前或者后排序}float ave=(1.0*sum)/total;//变floatprintf("%.2f\n",ave); }
}

公共钥匙盒——队列

【问题描述】

  有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。

  钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有标识,所以老师们不会弄混钥匙。

  每次取钥匙的时候,老师们都会找到自己所需要的钥匙将其取走,而不会移动其他钥匙。每次还钥匙的时候,还钥匙的老师会找到最左边的空的挂钩,将钥匙挂在这个挂钩上。如果有多位老师还钥匙,则他们按钥匙编号从小到大的顺序还。如果同一时刻既有老师还钥匙又有老师取钥匙,则老师们会先将钥匙全还回去再取出。

  今天开始的时候钥匙是按编号从小到大的顺序放在钥匙盒里的。有K位老师要上课,给出每位老师所需要的钥匙、开始上课的时间和上课的时长,假设下课时间就是还钥匙时间,请问最终钥匙盒里面钥匙的顺序是怎样的?

【输入形式】

  输入的第一行包含两个整数N, K。

  接下来K行,每行三个整数w, s, c,分别表示一位老师要使用的钥匙编号、开始上课的时间和上课的时长。可能有多位老师使用同一把钥匙,但是老师使用钥匙的时间不会重叠。

  保证输入数据满足输入格式,你不用检查数据合法性。

【输出形式】

 输出一行,包含N个整数,相邻整数间用一个空格分隔,依次表示每个挂钩上挂的钥匙编号。

【样例输入】

 5 2

 4 3 3

 2 2 7

【样例输出】

 1 4 3 2 5

【样例说明】

  第一位老师从时刻3开始使用4号教室的钥匙,使用3单位时间,所以在时刻6还钥匙。第二位老师从时刻2开始使用钥匙,使用7单位时间,所以在时刻9还钥匙。

  每个关键时刻后的钥匙状态如下(X表示空):

  时刻2后为1X345;

  时刻3后为1X3X5;

  时刻6后为143X5;

  时刻9后为14325。

【样例输入】

 5 7

 1 1 14

 3 3 12

 1 15 12

 2 7 20

 3 18 12

 4 21 19

 5 30 9

【样例输出】

 1 2 3 5 4

【评分标准】

  对于30%的评测用例,1 ≤ N, K ≤ 10, 1 ≤ w ≤ N, 1 ≤ s, c ≤ 30;

  对于60%的评测用例,1 ≤ N, K ≤ 50,1 ≤ w ≤ N,1 ≤ s ≤ 300,1 ≤ c ≤ 50;

  对于所有评测用例,1 ≤ N, K ≤ 1000,1 ≤ w ≤ N,1 ≤ s ≤ 10000,1 ≤ c ≤ 100

2
#include<bits/stdc++.h>
using namespace std;
typedef struct br{int w;int s;int c;int r;}br;
bool cmp(br a , br b){return a.w < b.w ;}
int main(){int n,k,i,j,z;cin>>n>>k;int a[1010]; for(i=1;i<=n;i++){a[i]=i;}br br[1010];for(i=0;i<k;i++){cin>>br[i].w>>br[i].s>>br[i].c;br[i].r=br[i].s+br[i].c;}sort(br,br+k,cmp); for(j=1;j<=10100;j++){for(i=0;i<k;i++){if(br[i].r==j){for(z=1;z<=n;z++){if(a[z]==0){a[z]=br[i].w;break;}}}}for(i=0;i<k;i++){if(br[i].s==j){for(z=1;z<=n;z++){if(a[z]==br[i].w){a[z]=0;break; }}}}}for(i=1;i<=n;i++)cout<<a[i]<<" ";return 0;
}

等值子串

【问题描述】如果字符串的一个子串(其长度大于1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中一个长度最大的等值子串;如果串S 中不存在等值子串,则输出信息no

【输入形式】输入一个字符串,并以!结束

【输出形式】输出第一个出现的最长字符串,如果没有输出no

【样例输入】aabc123abc123cc!

【样例输出】aa

【样例输入】abceebccadddddaaadd!

【样例输出】ddddd

//3. 等值子串
#include<bits/stdc++.h>
using namespace std;
int main(){string str;cin >> str;int sum = 0, cnt = 0;int temp = 0, a = 1;for(int i = 1; i < str.length(); i++){if(str[i] == str[i - 1]) a++;else {if(a > cnt) {cnt = a;sum = temp;}temp = i;a = 1;}}if(cnt > 1)for(int i = sum; i < sum + cnt; i++)cout << str[i];else cout << "no";
}


KMP模式匹配

【问题描述】KMP算法是字符串模式匹配算法中较为高效的算法之一,其在某次子串匹配母串失败时并未回溯母串的指针而是将子串的指针移动到相应的位置。

【输入形式】3组字符串,每组字符串占一行。每行包含由空格分隔的两个字符串,字符串仅由英文小写字母组成且长度不大于100。

【输出形式】每组数据输出1行,输出后一个字符串在前一个字符串中的位置,如果不匹配,则输出0。

【样例输入】

string str
thisisalongstring isa
nosubstring subt

【样例输出】

1

5

0

【提示】表示字符串的数据结构可以是字符数组或用串类实现。KMP算法调用很简单,但难的是理解算法的思想。掌握算法的思想才能说是掌握算法。

20.00下载源文件
得分20.00   最后一次提交时间:2023-03-23 16:46:47

共有测试数据:2
平均占用内存:1.307K    平均CPU时间:0.00742S    平均墙钟时间:0.00766S
 
测试数据评判结果
测试数据1完全正确
测试数据2完全正确
详细 
#include<bits/stdc++.h>
using namespace std;
int KMP( string T , string P, int next[] ,int len1 , int len2 )
{int i = 0 , j = 0;while( i < len1 && j < len2 ){if( j == -1){i++;j=0;}else if( P[j] == T[i] ){i++;j++;}else j = next[ j ];}if( j < len2 )return -1;else return i-j;
}
int main()
{int m=0;int next[405] ;string T ;string P ;while( cin >> T >> P ){   int len1 = T.size();int len2 = P.size();next[ 0 ] = -1;int j = 0, k = -1;while( j < len2 -1 ){if( k == -1){next[ j + 1 ] = 0;j++;k=0;}else if( P[ k ] == P[ j ] ){next[ j + 1 ] = k + 1;j++;k++;}else{k = next[ k ];}}m=KMP(  T ,  P, next ,len1 , len2 );if(m != -1)cout << m+1  << endl;elsecout<< "0" <<endl;}}

大整数相乘

【问题描述】输出两个不超过100位的大整数的乘积。

要求用串这一章的“块链串”知识实现两个大整数的相乘。比如每一个结点存储5位,12345678983426801则需要4个结点;先实现大整数乘上一个一位数;再实现两个大数相加。

用这样的链式存储形式便于计算:12--->34567--->89834--->26801

或者:26801--->89834--->34567--->12

【输入形式】

两个大数

【输出形式】

相乘的结果

【样例输入】

1234567891011121314151617181920

2019181716151413121110987654321

【样例输出】

2492816912877266687794240983772975935013386905490061131076320

20.00
#include <bits/stdc++.h>
using namespace std;
int arr[210];
typedef struct Link
{int  Maxsize ;int  num[5];struct  Link*next;}Link;
Link * Init ( Link *p , char s[] )
{Link *head = p;for(int i = 0 ; s[i] != '\0' ; i++){if(i != 0 && i%5 == 0){p -> next = new  Link;p = p -> next;}p -> num [i % 5] = s[i] -'0';p -> Maxsize = i % 5 ;}p -> next = NULL;return head;
}
void multiplication(Link *head1 , Link *head2 )
{Link *p,*q;int N = 0, M = 0 , i , j , Max = 0,m;for( p = head1 ; p != NULL ; p = p -> next )//遍历a{if(p != head1)N+=5;for( i = 0; i <= p -> Maxsize ; i++ ){for( q = head2 ; q != NULL ; q = q -> next ){if( q != head2 )M+=5;for( j = 0 ; j <= q -> Maxsize ; j++){m = M + N + i + j + 1;arr[ m ] += q -> num [ j ] * p -> num[ i ];Max = Max>m? Max :m;}}M=0;}}for( int k = Max ; k > 0 ; k-- )//进位问题{if( arr [ k ] >= 10 ){arr [ k - 1 ] += arr[ k ]/10;arr[ k ] %= 10;}}int k=0;if(arr [ k ] == 0)k++;for(; k <= Max ;  k++)cout<<arr [ k ];cout<<endl;
}
int main()
{char a[100] , b[100];cin >> a >> b ;Link*head1,*head2;head1 = new Link;head2 = new Link;head1 = Init ( head1 , a );head2 = Init ( head2 , b );multiplication( head1 , head2 );
}

最长公共子串

【问题描述】

给定两个字符串,求出它们两个最长的相同子字符串的长度。

最长公共子串(Longest Common Substring)是一个非常经典的面试题目,在实际的程序中也有很高的实用价值。同学们不应该单单只是写出该问题的基本解决代码而已,关键还是享受把算法一步步的优化,让时间和空间复杂度一步步的减少的惊喜。

【输入形式】

两个字符串

【输出形式】

最长的公共子串,若没有则输出“no”

【样例输入】

acbcbcef

abcbced

【样例输出】

bcbce

【温馨提示】

问题的关键不在于提交代码并通过测试数据,而是你是否真正掌握了所有求解的算法。

1.00
#include <bits/stdc++.h> 
using namespace std;
int main()
{   int dp;string  a , b ,temp , arr;int  x , y ;cin >> a >> b ;int len1 = a.size();int len2 = b.size();x = len1 - 1;while(y != len2 ){dp = 0 ;temp = "";for(int i = x, j = y;i <len1 && j < len2 ; i++,j++){if( a[ i ] == b[ j ] )dp++,temp +=  a[ i ];else{dp = 0 ; temp = "";}if( temp.size() > arr.size())arr = temp;}if(x) x--;else y++;}if( arr.size()) cout<< arr ;else cout<<"no";return 0;
}

相关文章:

【数据结构】第六周

目录 银行排队——队列 公共钥匙盒——队列 等值子串 KMP模式匹配 大整数相乘 最长公共子串 银行排队——队列 【问题描述】 我们大多都有在银行排队的经历&#xff0c;唉&#xff0c;那坑爹的排队啊&#xff01;现在就让我们来算算我们这些客户平均需要等多久吧。 每天…...

6.4.6拓扑排序

用DAG&#xff08;有向无环图&#xff09;表示一个工程。顶点表示活动&#xff0c;有向边<Vi&#xff0c;Vj>表示活动Vi活动必须先与Vj活动进行。 所谓的拓扑排序&#xff1a;找到做事的先后顺序 以上根据拓扑排序的实现&#xff1a; 加入对有回路的图进行拓扑排序&#…...

Ae:常用内置抠像效果

Ae 中的抠像都是基于效果控件来实现的&#xff0c;最终生成动态遮罩来控制画面像素的透明度。 常用的内置抠像效果有&#xff1a;提取、线性颜色键、颜色差值键、内部/外部键等。 黑色或白色背景的抠像 对于白色或黑色背景的素材&#xff0c;可直接尝试图层混合模式。 或者&…...

[ 支付宝支付笔记]

目录 前言: 支付宝支付: 创建AlipayClient对象&#xff08;注意&#xff0c;这里的appId、私钥、公钥等信息需要根据实际情况进行替换&#xff09;&#xff1a; 构造AlipayTradePagePayRequest对象&#xff0c;设置订单信息等参数&#xff1a; 调用AlipayClient对象的page…...

2023九坤投资暑期实习笔试复盘

5.22号笔试&#xff0c;5.24确认自己笔试挂。想想这也是自己第一次做量化私募基金的笔试&#xff0c;在此复盘一下。情况&#xff1a;北邮本硕。但开始准备暑期准备的比较晚&#xff0c;4月初才开始一边刷题一边投简历&#xff0c;所以手撕算法不太强&#xff0c;但运气和灵感好…...

深度学习的定义和未来发展趋势

深度学习的定义和未来发展趋势 什么是深度学习数学和编程的基础知识深度学习的应用领域深度学习的常见算法和模型训练深度学习模型深度学习的未来 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &#x1f396;️&#x1f396;️:Python领域新星创作者&#…...

如何更改 Linux 文件和目录权限?

在Linux系统中&#xff0c;文件和目录权限是安全性和访问控制的关键组成部分。正确设置文件和目录的权限可以确保只有授权的用户能够读取、写入或执行这些文件和目录。 本文将详细介绍如何在Linux系统中更改文件和目录的权限。 1. 文件和目录权限概述 在Linux系统中&#xff…...

Revit楼板问题:楼板连接处以及楼板开洞,一键开洞

在我们做楼梯时&#xff0c;楼梯与楼板处的连接处理不是那么符合实际&#xff0c;会出现一些问题&#xff0c;如下图&#xff0c;这样的连接会导致楼梯配筋时钢筋外露。 我们来学习如何调节楼板与楼板连接处的高度&#xff0c;选中楼梯&#xff0c;点击“编辑楼梯”在所需要更改…...

【AI领域+餐饮】| 论ChatGPT在餐饮行业的应用展望

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月29日论文合集)

文章目录 一、检测相关(12篇)1.1 Linear Object Detection in Document Images using Multiple Object Tracking1.2 Hybrid Energy Based Model in the Feature Space for Out-of-Distribution Detection1.3 BEV-IO: Enhancing Birds-Eye-View 3D Detection with Instance Occu…...

Altium Designer 相同电路多组复制布线

在进行设计开发的时候&#xff0c;总会遇到相同的电路&#xff0c;或者模块&#xff0c;这些电路可以使用相同的布局和走线。我们可以画好其中一部分&#xff0c;然后直接复制&#xff0c;就可以提高效率。下面记录我自己的实际操作过程&#xff0c;有一些地方遇到了问题&#…...

C++线程池介绍和C++代码实现

1、介绍 1.1 线程池应用场景 在进行创建线程任务时&#xff0c;如果需要频繁的创建线程、销毁线程&#xff0c;这样会极大地降低效率&#xff0c;因为创建线程也是需要时间的&#xff0c;一个完整的线程处理运行时间包括&#xff1a;线程的创建时间、线程运作时间、线程的销毁…...

【day 06】vue的组件

组件 组件就是把一个网页分割成独立的小的模块&#xff0c;然后通过把模块进行组合&#xff0c;构建成一个大型的应用 单文件组件 只有一个组件 html css js 都在这个文件内 非单文件组件 可有多个组件 全局注册 !! 得先注册子组件 再生成 vm实例对象 创建子组件 const …...

第3章 Class and Object

构造函数 Guaranteed initialization with the constructor使用构造函数保证初始化 • If a class has a constructor, the compiler automatically calls that constructor at the point an object is created, before client programmers can get their hands on the o…...

卫星定位北斗芯片AT6558一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片

1 芯片简介 AT6558R是一款高性能BDS/GNSS多模卫星导航接收机SOC单芯片,片上集成射频前端&#xff0c; 数字基带处理器&#xff0c;32位的RISCCPU&#xff0c;电源管理功能。 芯片支持多种卫星导航系统&#xff0c;包括中国的北斗卫星导航系统BDS&#xff0c;美国的GPS,俄罗斯 的…...

提升您的 MQTT 云服务:深入探索 BYOC

引言 您是否希望将物联网基础设施提升到更高的水平&#xff1f;为了应对业务的不断扩展&#xff0c;您需要一个强大且安全的消息平台来支持它。 MQTT 协议凭借其轻量级、发布/订阅模型和可靠性&#xff0c;已经成为构建物联网平台的首选方案。但是&#xff0c;随着业务的增长…...

Zookeeper面试题总结

1、说说 Zookeeper 是什么&#xff1f; 有些软件你想做成集群或者分布式&#xff0c;你可以用 ZooKeeper 帮你来辅助实现。特点&#xff1a;ZooKeeper 的特点&#xff1a;维护、协调、管理、监控 最终一致性&#xff1a;客户端看到的数据最终是一致的。可靠性&#xff1a;服务…...

如何使用HTML、CSS和JavaScript来制作这两种类型的时钟

随着计算机技术的不断发展和普及&#xff0c;人们对于时间的精准度要求也越来越高。时钟作为我们日常生活必不可少的工具之一&#xff0c;也得到了越来越多的关注和研究。而在Web开发中&#xff0c;我们同样可以使用HTML、CSS和JavaScript的组合&#xff0c;制作出各式各样的时…...

Java中操作Xml使用备忘

List item 文章目录 Java中操作Xml使用备忘1. Hutool中XmlUtil的使用简介2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时&#xff0c;推荐使用]2-1 Hutool工具包Maven依赖和测试Xml字符串如下2-2 读取Xml中的节点<message>的值 3. Hutool中XmlUtil详细操作示…...

【Java|基础篇】内部类

文章目录 1.什么是内部类?2.实例内部类3.静态内部类4.局部内部类5.匿名内部类6.结语 1.什么是内部类? 内部类就是在一个类中再定义一个类,内部类也是封装的体现.它可以被声明为 public、protected、private 或默认访问控制符。内部类可以访问外部类的所有成员变量和方法&…...

【好靶场】越权获取信息

访问页面是一个个人信息页面我们看下雪瞳&#xff0c;可以看到的2个API接口直接抓包发现是可以进行水平越权直接进行intruder得到flag...

Xamarin.Macios部署与发布:从开发到上架的完整流程

Xamarin.Macios部署与发布&#xff1a;从开发到上架的完整流程 【免费下载链接】xamarin-macios .NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C# 项目地址: https://gitcode.…...

聊聊jvm的内存结构, 以及各种结构的作用

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

从ORB到SIFT:视觉SLAM中特征点算法实战对比(附OpenCV代码示例)

从ORB到SIFT&#xff1a;视觉SLAM中特征点算法实战对比与工程选型指南 1. 视觉SLAM中的特征点算法核心价值 在机器人自主导航和增强现实领域&#xff0c;视觉SLAM系统的前端处理如同人类视觉皮层&#xff0c;而特征点算法则是这个系统的视网膜神经节细胞。这些算法不仅决定了系…...

OpenClaw安全防护方案:Phi-3-mini-128k-instruct任务执行边界控制

OpenClaw安全防护方案&#xff1a;Phi-3-mini-128k-instruct任务执行边界控制 1. 为什么需要安全防护 当我第一次让OpenClaw接管本地电脑操作权限时&#xff0c;那种既兴奋又忐忑的心情至今记忆犹新。看着AI自动整理文件、发送邮件、执行脚本的同时&#xff0c;一个挥之不去的…...

宿主机与虚拟机网络配置打通

Kali 虚拟机网络配置笔记 一、基础网络模式 1. 桥接模式 (Bridged) 目的&#xff1a;让虚拟机加入物理局域网配置&#xff1a; 选择物理网卡&#xff08;非VMnet1/VMnet8&#xff09;启用"复制物理网络连接状态"&#xff08;推荐笔记本用户&#xff09; 结果&#xf…...

2026年社会学论文降AI率工具推荐:田野调查和访谈记录部分

2026年社会学论文降AI率工具推荐&#xff1a;田野调查和访谈记录部分 同学群里有人问社会学论文降AI工具推荐&#xff0c;我发现自己每次回答都差不多——嘎嘎降AI。干脆写一篇详细的推荐文章&#xff0c;省得每次重复。 直接结论&#xff1a;嘎嘎降AI&#xff08;www.aigcle…...

S-UI前端工程化:ESLint与Prettier代码质量保障

S-UI前端工程化&#xff1a;ESLint与Prettier代码质量保障 还在为代码风格混乱、团队协作困难而头疼吗&#xff1f;S-UI作为专业的代理面板项目&#xff0c;通过完善的工程化配置确保了代码质量。本文将为你解析如何在类似项目中配置ESLint和Prettier&#xff0c;打造规范的开…...

116. 为项目监控员生成的警报添加标签

Procedure 程序To label alerts for Project Monitors, you must configure the Prometheus Federator Helm charts values section. This is done by adding additionalRuleLabels under defaultRules within helmProjectOperator. You can perform this modification during…...

告别官方解锁后,我们还能怎么玩?深挖华为荣耀解BL的三种野路子与工具链

华为荣耀设备解锁技术深度解析&#xff1a;原理、工具与风险规避 在移动设备定制化需求日益增长的今天&#xff0c;安卓系统的Bootloader解锁成为技术爱好者绕不开的话题。特别是对于华为和荣耀设备用户而言&#xff0c;自2018年官方关闭解锁服务后&#xff0c;这一过程变得更…...