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

数据结构——停车场管理问题

目录

  • 1、问题描述
  • 2、逐步分析
    • 1)涉及操作
    • 2)代码实现
  • 3、代码整合

1、问题描述

1、题目
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若停车场已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在其之后开入的车辆必须先退出停车场让路,待该辆车开出大门外,其他车辆再按原次序进入停车场,每辆停放在停车场的车在其离开停车场时必须按其停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
2、设计要求
以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模拟管理。输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示显示出停车场内及便道上的停车情况;输入4,表示退出系统。车辆到达操作,需输入汽车牌照号码及到达时间;车辆离开操作,需输入汽车在停车场的位置及离开时刻,且应输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)。

2、逐步分析

1)涉及操作

①基础操作

  1. 初始化
  2. 判断栈/队列为空
  3. 判断栈/队列为满
  4. 计算栈/队列长度
  5. 入栈/队列
  6. 出栈/队列
  7. 栈/队列打印

②要求操作

  1. 车辆到达
  2. 车辆离开

2)代码实现

1、结构体定义
①车辆信息

typedef struct Car
{int CarNo;//车牌号int CarTime;//车进入时间
}Car;

②顺序栈

typedef struct SqStack
{Car* data;//车辆信息int top;//栈顶int size;//长度
}SqStack;

③循环队列

typedef struct SqQueue
{Car* data;//车辆信息int top;//队头int tail;//队尾int size;//长度                                                                                                                       
}SqQueue;

2、基础操作
①初始化
栈:

SqStack* InitStack()
{SqStack* s = (SqStack*)malloc(sizeof(SqStack));s->data = (Car*)malloc(sizeof(Car) * MAXSIZE_St);if (s->data == NULL || s->data == NULL){return NULL;}s->size = 0;s->top = 0;//表示栈为空return s;
}

队列:

SqQueue* InitQueue()
{SqQueue* q = malloc(sizeof(SqQueue));q->data = (Car*)malloc(sizeof(Car) * MAXSIZE_Qu);if (!q || !(q->data)){return NULL;}//初始头指针和尾指针指向0索引q->top = q->tail = 0;return q;
}

②为空判断
栈:

int StackEmpty(SqStack* s)
{if (s->top == 0)return 1;//为空elsereturn 0;//不为空
}

队列:

int QueueEmpty(SqQueue* q)
{if (q->top == q->tail){return 1;//为空}return 0;//不为空
}

③为满判断
栈:

int StackFull(SqStack* s)
{if (s->size != MAXSIZE_St)return 0;//未满elsereturn 1;//已满
}

队列:

int QueueFull(SqQueue* q)
{return ((q->tail + 1) % MAXSIZE_Qu == q->top) ? 1 : 0;
}

④长度计算
栈:

int StackLength(SqStack* s)
{return s->size;
}

队列:

int QueueLength(SqQueue* q)
{return (q->tail - q->top + MAXSIZE_Qu) % MAXSIZE_Qu;
}

⑤入栈/队列
栈:

void Push(SqStack* s, int n, int t1)
{s->data[s->top].CarNo = n;s->data[s->top].CarTime = t1;s->top++;s->size++;
}

队列:

void EnQueue(SqQueue* q, int n, int t1)
{if (QueueFull(q)){return;}q->data[q->tail].CarNo = n;q->data[q->tail].CarTime = t1;//入队成功后,尾指针指向下一个位置q->tail = (q->tail + 1) % MAXSIZE_Qu;
}

⑥出栈/队列
栈:

void Pop(SqStack* s)
{if (StackEmpty(s)){printf("停车场为空\n");return;}s->top--;s->size--;
}

队列:

void DeQueue(SqQueue* q)
{if (QueueEmpty(q)){return;//队列为空}//出队成功后,头指针指向下一个位置q->top = (q->top + 1) % MAXSIZE_Qu;
}

⑦打印
栈:

void DispStack(SqStack* s)
{//对栈是否为空进行判断if (StackEmpty(s)){printf("停车场中没有车辆\n");return;}//循环打印停车场中的元素int i = 0;printf("停车场中共%d辆车,还有%d个空位\n", StackLength(s), MAXSIZE_St -StackLength(s));printf("车牌号\t进场时间\n");//size-1是因为在入栈时size最后会自增指向空位置for (i = s->size - 1; i >= 0; i--){printf("%-4d\t%-2d\n", s->data[i].CarNo, s->data[i].CarTime);}
}

队列:

void DispQueue(SqQueue* q)
{if (QueueEmpty(q)){printf("便道上没有车辆\n");return;//队列为空}//循环打印便道(队列Q)中的元素int i = 0;printf("便道中共%d辆车\n", StackLength(q));printf("便道中的车辆: \n");for (i = 0; i < QueueLength(q); i++){//出队后头指针会向后走,所以头指针决定了元素的索引printf("车牌号   %d\n", q->data[i + q->top].CarNo);}
}

3、要求操作
①车辆到达

void Parking_Arrive(SqStack* s1, SqQueue* q)
{int n = 0;	//车号int t1 = 0;	//车的到达时间if (!StackFull(s1)){//停车场S1未满时printf("车号  到达时间: ");scanf("%d %d", &n, &t1);Push(s1, n, t1);printf("所在停车场位置: %d\n", s1->size);}else{//停车场S1已满时printf("车号  到达时间: ");scanf("%d %d", &n, &t1);EnQueue(q, n, t1);printf("所在便道位置: %d\n", (q->tail));}return;
}

②车辆离开

void Parking_Leave(SqStack* s1, SqStack* s2, SqQueue* q)
{int i = 0;int n = 0;	//车号int t2 = 0; //车的离开时间int index = -1;	//对应车号的索引int count = 0;	//出栈入栈次数printf("车号  离开时间: ");scanf("%d %d", &n, &t2);//找到要离开的车,记录其索引for (i = s1->size - 1; i >= 0; i--){if (n == s1->data[i].CarNo){index = i;break;}}if (index == -1){printf("无对应车号的车辆!\n");return;}//说明离开的车所花停车费用int price = (t2 - s1->data[index].CarTime) * Parking_price;printf("该汽车的停车费用为: %d.\n", price);//将需要离开的车其后面的车移动到栈S2中for (i = s1->size - 1; i > index; i--){//将对应元素入栈到S2中后,再从S1中出栈Push(s2, s1->data[i].CarNo, s1->data[i].CarTime);Pop(s1);//每有一辆车进入S2则count加一count++;}//将离开的车(目前处于栈顶)出栈Pop(s1);//先将暂存S2中的车入栈到栈S1中(S2有车的情况下)for (i = count - 1; i >= 0; i--){//S2中的车入栈到S1中,再在S2中进行出栈Push(s1, s2->data[i].CarNo, s2->data[i].CarTime);Pop(s2);}//如果栈S1未满,则将便道Q的车入栈到S1中if (!StackFull(s1) && !QueueEmpty(q)){for (i = 0; i < MAXSIZE_St - s1->size; i++){//队列Q中的车入栈到S1中,再在Q中进行出队Push(s1, q->data[i + q->top].CarNo, q->data[i + q->top].CarTime);DeQueue(q);}}return;
}

4、主函数

int main()
{//初始化两个停车场栈(S1和S2)和一个便道队列(Q)SqStack* S1 = InitStack();SqStack* S2 = InitStack();SqQueue* Q = InitQueue();int select = 0;	do {printf("请输入指令(1:车辆到达 2:车辆离开 3:停车场、便道信息 0:退出系统): ");scanf("%d", &select);switch (select){case 1:Parking_Arrive(S1, Q);break;case 2:Parking_Leave(S1, S2, Q);break;case 3:DispStack(S1);DispQueue(Q);break;case 0:printf("已退出系统!\n");break;default:printf("请重新输入\n");getchar();}} while (select);return 0;
}

3、代码整合

#define _CRT_SECURE_NO_WARNINGS
#include<stdlib.h>
#include<stdio.h>#define MAXSIZE_St 3//栈最大容量
#define MAXSIZE_Qu 100//队列最大容量
#define Parking_price 5	//停车费5/h//车辆信息
typedef struct Car
{int CarNo;//车牌号int CarTime;//车进入时间
}Car;//顺序栈(停车场和车辆离开时暂时需要进入的区域)
typedef struct SqStack
{Car* data;//车辆信息int top;//栈顶int size;//长度
}SqStack;//循环队列(便道)
typedef struct SqQueue
{Car* data;//车辆信息int top;//队头int tail;//队尾int size;//长度                                                                                                                       
}SqQueue;//初始化栈
SqStack* InitStack()
{SqStack* s = (SqStack*)malloc(sizeof(SqStack));s->data = (Car*)malloc(sizeof(Car) * MAXSIZE_St);if (s->data == NULL || s->data == NULL){return NULL;}s->size = 0;s->top = 0;//表示栈为空return s;
}//检查栈是否为空,即停车场是否无车。
int StackEmpty(SqStack* s)
{if (s->top == 0)return 1;//为空elsereturn 0;//不为空
}//检查栈是否已满,即停车场是否已满。
int StackFull(SqStack* s)
{if (s->size != MAXSIZE_St)return 0;//未满elsereturn 1;//已满
}//计算栈的长度,即停车场内车辆数量。
int StackLength(SqStack* s)
{return s->size;
}//将新车辆加入到栈(停车场)中。
void Push(SqStack* s, int n, int t1)
{s->data[s->top].CarNo = n;s->data[s->top].CarTime = t1;s->top++;s->size++;
}//从栈中移除车辆。
void Pop(SqStack* s)
{if (StackEmpty(s)){printf("停车场为空\n");return;}s->top--;s->size--;
}//显示栈中的所有车辆信息。
void DispStack(SqStack* s)
{//对栈是否为空进行判断if (StackEmpty(s)){printf("停车场中没有车辆\n");return;}//循环打印停车场中的元素int i = 0;printf("停车场中共%d辆车,还有%d个空位\n", StackLength(s), MAXSIZE_St -StackLength(s));printf("车牌号\t进场时间\n");//size-1是因为在入栈时size最后会自增指向空位置for (i = s->size - 1; i >= 0; i--){printf("%-4d\t%-2d\n", s->data[i].CarNo, s->data[i].CarTime);}
}//初始化队列
SqQueue* InitQueue()
{SqQueue* q = malloc(sizeof(SqQueue));q->data = (Car*)malloc(sizeof(Car) * MAXSIZE_Qu);if (!q || !(q->data)){return NULL;}//初始头指针和尾指针指向0索引q->top = q->tail = 0;return q;
}//检查队列是否为空,即便道是否无车。
int QueueEmpty(SqQueue* q)
{if (q->top == q->tail){return 1;//为空}return 0;//不为空
}//检查队列是否已满,即便道是否已满。
int QueueFull(SqQueue* q)
{return ((q->tail + 1) % MAXSIZE_Qu == q->top) ? 1 : 0;
}int QueueLength(SqQueue* q)
{return (q->tail - q->top + MAXSIZE_Qu) % MAXSIZE_Qu;
}//将新车辆加入到队列中。
void EnQueue(SqQueue* q, int n, int t1)
{if (QueueFull(q)){return;}q->data[q->tail].CarNo = n;q->data[q->tail].CarTime = t1;//入队成功后,尾指针指向下一个位置q->tail = (q->tail + 1) % MAXSIZE_Qu;
}//从队列中移除车辆。
void DeQueue(SqQueue* q)
{if (QueueEmpty(q)){return;//队列为空}//出队成功后,头指针指向下一个位置q->top = (q->top + 1) % MAXSIZE_Qu;
}//显示队列中的所有车辆信息。
void DispQueue(SqQueue* q)
{if (QueueEmpty(q)){printf("便道上没有车辆\n");return;//队列为空}//循环打印便道(队列Q)中的元素int i = 0;printf("便道中共%d辆车\n", StackLength(q));printf("便道中的车辆: \n");for (i = 0; i < QueueLength(q); i++){//出队后头指针会向后走,所以头指针决定了元素的索引printf("车牌号   %d\n", q->data[i + q->top].CarNo);}
}void Parking_Arrive(SqStack* s1, SqQueue* q)
{int n = 0;	//车号int t1 = 0;	//车的到达时间if (!StackFull(s1)){//停车场S1未满时printf("车号  到达时间: ");scanf("%d %d", &n, &t1);Push(s1, n, t1);printf("所在停车场位置: %d\n", s1->size);}else{//停车场S1已满时printf("车号  到达时间: ");scanf("%d %d", &n, &t1);EnQueue(q, n, t1);printf("所在便道位置: %d\n", (q->tail));}return;
}void Parking_Leave(SqStack* s1, SqStack* s2, SqQueue* q)
{int i = 0;int n = 0;	//车号int t2 = 0; //车的离开时间int index = -1;	//对应车号的索引int count = 0;	//出栈入栈次数printf("车号  离开时间: ");scanf("%d %d", &n, &t2);//找到要离开的车,记录其索引for (i = s1->size - 1; i >= 0; i--){if (n == s1->data[i].CarNo){index = i;break;}}if (index == -1){printf("无对应车号的车辆!\n");return;}//说明离开的车所花停车费用int price = (t2 - s1->data[index].CarTime) * Parking_price;printf("该汽车的停车费用为: %d.\n", price);//将需要离开的车其后面的车移动到栈S2中for (i = s1->size - 1; i > index; i--){//将对应元素入栈到S2中后,再从S1中出栈Push(s2, s1->data[i].CarNo, s1->data[i].CarTime);Pop(s1);//每有一辆车进入S2则count加一count++;}//将离开的车(目前处于栈顶)出栈Pop(s1);//先将暂存S2中的车入栈到栈S1中(S2有车的情况下)for (i = count - 1; i >= 0; i--){//S2中的车入栈到S1中,再在S2中进行出栈Push(s1, s2->data[i].CarNo, s2->data[i].CarTime);Pop(s2);}//如果栈S1未满,则将便道Q的车入栈到S1中if (!StackFull(s1) && !QueueEmpty(q)){for (i = 0; i < MAXSIZE_St - s1->size; i++){//队列Q中的车入栈到S1中,再在Q中进行出队Push(s1, q->data[i + q->top].CarNo, q->data[i + q->top].CarTime);DeQueue(q);}}return;
}int main()
{//初始化两个停车场栈(S1和S2)和一个便道队列(Q)SqStack* S1 = InitStack();SqStack* S2 = InitStack();SqQueue* Q = InitQueue();int select = 0;	do {printf("请输入指令(1:车辆到达 2:车辆离开 3:停车场、便道信息 0:退出系统): ");scanf("%d", &select);switch (select){case 1:Parking_Arrive(S1, Q);break;case 2:Parking_Leave(S1, S2, Q);break;case 3:DispStack(S1);DispQueue(Q);break;case 0:printf("已退出系统!\n");break;default:printf("请重新输入\n");getchar();}} while (select);return 0;
}

相关文章:

数据结构——停车场管理问题

目录 1、问题描述2、逐步分析1&#xff09;涉及操作2&#xff09;代码实现 3、代码整合 1、问题描述 1、题目 设停车场内只有一个可停放n辆汽车的狭长通道&#xff0c;且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序&#xff0c;依次由北向南排列&#x…...

道品智能科技移动式水肥一体机:农业灌溉施肥的革新之选

在现代农业的发展进程中&#xff0c;科技的力量正日益凸显。其中&#xff0c;移动式水肥一体机以其独特的可移动性、智能化以及实现水肥一体化的卓越性能&#xff0c;成为了农业领域的一颗璀璨新星。它不仅改变了传统的农业灌溉施肥方式&#xff0c;更为农业生产带来了高效、精…...

AI实习--常用的Linux命令

一、基础命令 1. 切换到根目录。 cd ~ 2. 返回上一级目录。 cd .. 3. 查看当前目录下包括哪些文件和文件夹。 ls 4. 查看当前路径。 pwd 5. 将文件或文件夹剪切到目标目录下。 mv 文件所在路径 目标路径 6. 查看文本文件内容。 cat 文本文件名 7. 创建文件或文件夹…...

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时&#xff0c;我们可能会出现这样的困惑&#x…...

研0找实习【学nlp】15---我的后续,总结(暂时性完结)

当下进展成果&#xff1a; nlptransformerpytorchhuggingfacebert简历环境配置表情识别文本分类 断更了快1个月&#xff0c;2个礼拜找实习&#xff0c;1个礼拜伤心&#xff0c;1个礼拜想我要干什么…… 承认自己的才疏学浅&#xff0c;了解了leetcode&#xff0c;和老师商量了…...

kylin麒麟银河桌面版操作系统安装部署

本文主要描述kylin麒麟银河桌面版操作系统的安装&#xff0c;该操作系统的安装源文件可以从kylin麒麟银河官方网站上下载&#xff0c;商业版本需要申请试用&#xff0c;开源版本可以直接下载使用。 如上所示&#xff0c;x86芯片处理器架构的请下载INTEL版本&#xff0c;华为海思…...

MyBatis插件原理及应用

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 介绍<plugins>标签解析拦截器链的工作原理插件的应用场景MyBatis插件应用的四个组件InterceptorChain和Interceptor MyBatis框架…...

[M最短路] lc743. 网络延迟时间(spfa最短路+单源最短路)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;743. 网络延迟时间 相关链接&#xff1a; [图最短路模板] 五大最短路常用模板) 2. 题目解析 怎么讲呢&#xff0c;挺抽象的…很久没写最短路算法了。反正也是写出来了&#xff0c;但脱离了模板&#xff0c;把…...

MySQL 中的锁

MySQL 中的锁&#xff1a;全面解析与应用指南 在 MySQL 数据库的复杂世界里&#xff0c;锁是确保数据一致性、完整性以及并发控制的关键机制。无论是简单的小型应用还是复杂的企业级系统&#xff0c;深入理解 MySQL 中的锁对于优化数据库性能、避免数据冲突和错误都具有至关重要…...

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

【C++11】尽显锋芒

(续) 一、可变参数模板 C11支持可变参数模板&#xff0c;也就是说支持可变数量参数的函数模板和类模板&#xff0c;可变数目的参数被称 为参数包&#xff0c;存在两种参数包&#xff1a;模板参数包&#xff0c;表示零或多个模板参数&#xff1b;函数参数包&#xff1a;表示零…...

掌握控制流的艺术:Go语言中的if、for和switch语句

标题:掌握控制流的艺术:Go语言中的if、for和switch语句 在Go语言的编程世界中,控制流语句是构建程序逻辑的基石。if语句、for循环和switch语句是我们最常用的控制流工具,它们让我们能够根据不同的条件执行不同的代码块。本文将深入探讨这些语句的使用方法、技术细节和实际…...

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后&#xff0c;点击头像&#xff0c;弹出菜单有个按钮设置 2. 3....

.net 支持跨平台(桌面)系列技术汇总

1. 首先微软老大哥的.net core 。 .NET Core 是微软开发的一个跨平台、高性能的开源框架&#xff0c;用于构建云和互联网连接的新型应用。 它允许开发者在 Windows、macOS 和 Linux 上使用喜爱的开发工具进行开发&#xff0c;并支持部署到云或本地环境。 .NET Core 是对 .NET …...

springboot 静态资源访问

最近在学习springboot&#xff0c;在学习中一个静态资源访问&#xff0c;难道了我三天&#xff0c;在网上找了很多的资料&#xff0c;又是配置&#xff0c;又是重写WebMvcConfigurationSupport&#xff0c;因为以前没有接触&#xff0c;本来很简单的事情走了很多弯路&#xff0…...

【linux学习指南】初识Linux进程信号与使用

文章目录 &#x1f4dd;信号快速认识&#x1f4f6;⽣活⻆度的信号&#x1f4f6; 技术应⽤⻆度的信号&#x1f309; 前台进程&#xff08;键盘&#xff09;&#x1f309;⼀个系统函数 &#x1f4f6;信号概念&#x1f4f6;查看信号 &#x1f320; 信号处理&#x1f309; 忽略此信…...

L1G1000 书生大模型全链路开源开放体系笔记

关卡任务 观看本关卡视频后&#xff0c;写一篇关于书生大模型全链路开源开放体系的笔记。 视频链接&#xff1a;【书生浦语大模型全链路开源体系】 : 书生浦语大模型开源开放体系_哔哩哔哩_bilibili 书生大模型全链路开源开放体系笔记 在人工智能领域&#xff0c;大模型的…...

亚信安全与飞书达成深度合作

近日&#xff0c;亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题&#xff0c;吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动&#xff0c;本场活动更加深入挖掘了数字化转型的基础…...

深入讲解Spring Boot和Spring Cloud,外加图书管理系统实战!

很抱歉&#xff0c;我的疏忽&#xff0c;说了这么久还没有给大家详细讲解过Spring Boot和Spring Cloud,那今天给大家详细讲解一下。 大家可以和下面这三篇博客一起看&#xff1a; 1、Spring Boot 和 Spring Cloud 微服务开发实践详解https://blog.csdn.net/speaking_me/artic…...

【三维生成】Edify 3D:可扩展的高质量的3D资产生成(英伟达)

标题&#xff1a;Edify 3D: Scalable High-Quality 3D Asset Generation 项目&#xff1a;https://research.nvidia.com/labs/dir/edify-3d demo&#xff1a;https://build.nvidia.com/Shutterstock/edify-3d 文章目录 摘要一、前言二、多视图扩散模型2.1.消融研究 三、重建模型…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...