【刷题宝典NO.1】
Nim游戏
https://leetcode.cn/problems/nim-game/description/
你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合, 你作为先手 。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为
n的情况下赢得游戏。如果可以赢,返回true;否则,返回false。示例 1:
输入:n = 4 输出:false 解释:以下是可能的结果: 1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。 2. 移除2个石子。你的朋友移走2块石头,包括最后一块。你的朋友赢了。 3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。 在所有结果中,你的朋友是赢家。示例 2:
输入:n = 1 输出:true示例 3:
输入:n = 2 输出:true提示:
1 <= n <= 2^31 - 1
/**
题解:
因为是我先手,且每次可以拿掉1-3块石头
因为说的是桌子上有一堆石头,显然石头的数量要>3,因为<=3的时候,肯定都是我先赢
假设此时桌上的石头有4个
我先拿1个或者2个或者3个石头都是输掉比赛的结局
假设此时桌上有5个石头
只要我先拿1块,对方无论拿1块或者2块或者3块石头,都是我赢
但是我先拿2块或者3块,就一定会输,所以这种情况游戏的胜负是可控的
总结:
如果最后只剩下4块石头,无论采取什么策略,由于我是先手,那么我必输
可以对石头的块数进行对4取余,判断这个结果是否不等于0,不等于0的话就说明能赢,否则就是输*/
class Solution {public boolean canWinNim(int n) {return n % 4 != 0;}
}
灯泡开关
https://leetcode.cn/problems/bulb-switcher/submissions/477395544/
初始时有
n个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭第二个。第三轮,你每三个灯泡就切换第三个灯泡的开关(即,打开变关闭,关闭变打开)。第
i轮,你每i个灯泡就切换第i个灯泡的开关。直到第n轮,你只需要切换最后一个灯泡的开关。找出并返回
n轮后有多少个亮着的灯泡。示例 1:
输入:n = 3 输出:1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关闭]. 第一轮后, 灯泡状态 [开启, 开启, 开启]. 第二轮后, 灯泡状态 [开启, 关闭, 开启]. 第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 你应该返回 1,因为只有一个灯泡还亮着。示例 2:
输入:n = 0 输出:0示例 3:
输入:n = 1 输出:1提示:
0 <= n <= 109
class Solution {public int bulbSwitch(int n) {// n = 14 , 3.xx// n = 15 , 3.xx// n = 16 , 4// 求小于等于 n 的完全平方数的个数return (int)Math.sqrt(n);}
}

除数博弈
https://leetcode.cn/problems/divisor-game/description/
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。
最初,黑板上有一个数字
n。在每个玩家的回合,玩家需要执行以下操作:
选出任一
x,满足0 < x < n且n % x == 0。用
n - x替换黑板上的数字n。如果玩家无法执行这些操作,就会输掉游戏。
只有在爱丽丝在游戏中取得胜利时才返回
true。假设两个玩家都以最佳状态参与游戏。示例 1:
输入:n = 2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作。示例 2:
输入:n = 3 输出:false 解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。提示:
1 <= n <= 1000
class Solution {public boolean divisorGame(int n) {return n % 2 == 0;}
}

提莫攻击
https://leetcode.cn/problems/teemo-attacking/description/
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续
duration秒。正式地讲,提莫在
t发起攻击意味着艾希在时间区间[t, t + duration - 1](含t和t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在duration秒后结束。给你一个 非递减 的整数数组
timeSeries,其中timeSeries[i]表示提莫在timeSeries[i]秒时对艾希发起攻击,以及一个表示中毒持续时间的整数duration。返回艾希处于中毒状态的 总 秒数。
示例 1:
输入:timeSeries = [1,4], duration = 2 输出:4 解释:提莫攻击对艾希的影响如下: - 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。 - 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。 艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。示例 2:
输入:timeSeries = [1,2], duration = 2 输出:3 解释:提莫攻击对艾希的影响如下: - 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。 - 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。 艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3 。提示:
1 <= timeSeries.length <= 1040 <= timeSeries[i], duration <= 107timeSeries按 非递减 顺序排列
public class Solution {public int findPoisonedDuration(int[] timeSeries, int duration) {int ans = 0; // 结果变量int expired = 0; // 每次中毒结束的时间位置(一开始为0,此时没中毒)for (int i = 0; i < timeSeries.length; i++) {// 1、如果发现当前的时间大于等于了最近一次中毒后得结束时间(说明此时没有中毒)if (timeSeries[i] >= expired) {// 此时收到攻击就中毒了,叠加时间ans += duration;} else {// 否则,如果发现当前的时间小于最近一次中毒后得结束时间// 由于中毒状态不可叠加// 新的中毒截止时间是 timeSeries[i] + duration// 上次中毒截止时间是 expired// 两者相减,获得持续中毒时间ans += timeSeries[i] + duration - expired;}// 更新中毒结束的时间位置expired = timeSeries[i] + duration;}// 返回结果return ans;}
}
至少是其他数字两倍的最大数
给你一个整数数组
nums,其中总是存在 唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回
-1。示例 1:
输入:nums = [3,6,1,0] 输出:1 解释:6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。示例 2:
输入:nums = [1,2,3,4] 输出:-1 解释:4 没有超过 3 的两倍大,所以返回 -1 。
/**
题解:我们只需要找出两个数字:最大的数,第二大的数
因为最大数都是第二大数的两倍了,最大数肯定也是其它数的两倍
所以我们只需要遍历一次,在这个遍历过程中确定最大值和第二大的值,同时记录最大值的下标,根据要求进行返回*/
class Solution {public int dominantIndex(int[] nums) {// 最大数int biggest = -1;// 第二大数int bigger = -1;// 最大数所在的索引int index = 0;// 遍历数组 numsfor (int i = 0; i < nums.length; i++) {int num = nums[i];// 如果发现当前元素的值大于了之前找到的最大数if (num > biggest) {// 更新第二大数bigger = biggest;// 更新最大数为 numbiggest = num;// 记录最大数的索引index = i;} else if (num > bigger) {// 更新第二大数bigger = num;}}// 判断一下最大数是否是第二大数的两倍// 如果是,则返回最大数的索引 index// 否则,返回 -1return (biggest >= bigger * 2) ? index : -1;}
}
比赛中的配对次数
给你一个整数
n,表示比赛中的队伍数。比赛遵循一种独特的赛制:
- 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行
n / 2场比赛,且产生n / 2支队伍进入下一轮。- 如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
(n - 1) / 2场比赛,且产生(n - 1) / 2 + 1支队伍进入下一轮。返回在比赛中进行的配对次数,直到决出获胜队伍为止。
示例 1:
输入:n = 7 输出:6 解释:比赛详情: - 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。 - 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。 - 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。 总配对次数 = 3 + 2 + 1 = 6示例 2:
输入:n = 14 输出:13 解释:比赛详情: - 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。 - 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。 - 第 3 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。 - 第 4 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。 总配对次数 = 7 + 3 + 2 + 1 = 13提示:
1 <= n <= 200
public class Solution {// 计算比赛中的配对次数public int numberOfMatches(int n) {// 结果变量int ans = 0;// 不断的配对比赛,直到剩下一支队伍为止while (n > 1) {// 偶数支队伍if (n % 2 == 0) {// 总共进行 n / 2 场比赛ans += n / 2;// 同时剩下了 n / 2 支队伍n /= 2;} else {// 奇数支队伍// 总共进行 ( n - 1 ) / 2 场比赛ans += (n - 1) / 2;// 同时剩下了 (n - 1) / 2 + 1 支队伍n = (n - 1) / 2 + 1;}}// 获取结果return ans;}
}
【模拟】科大讯飞2023非凡计划-汤姆和杰瑞
题目描述与示例
题目描述
汤姆在集市上买了
1公斤奶酪回家。然而,趁汤姆不在时,杰瑞来偷了A/B公斤的奶酪。问杰瑞偷了奶酪后,汤姆还有多少奶酪?输入描述
第—行给出两个整数
A,B。1 ≤ A < B ≤ 9输出描述
输出杰瑞偷了奶酪后,汤姆还有多少奶酪。以分数的形式表示,分子和分母用空格间隔。(输出必须满足分母为
B)示例
输入
2 7输出
5 7
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int A = scanner.nextInt();int B = scanner.nextInt();System.out.println(B - A + " " + B);}
}
【模拟】OPPO2023秋招提前批-小欧的圆覆盖
题目描述与示例
题目描述
在平面直角坐标系上有一个矩形,和一个定点
P。小欧希望以点P为圆心画一个圆覆盖这个矩形,请你求出圆面积的最小值。注:π取3.1415926536输入描述
第一行输入四个整数
x1,y1,x2,y2,代表矩形左下角坐标为(x1,y1),右上角坐标为(x2,y2)。第二行输入两个整数
xp,yp,代表点P的坐标为(xp,yp)。输出描述
一个浮点数,代表圆的最小面积。如果你的答案和标准答案的相对误差不超过
10^-4,则认为你的答案正确。示例
输入
0 0 1 1 0 0输出
6.2831853解题思路
本题是非常简单的数学模拟题。
为了使得以
P为圆心的圆可以覆盖到整个矩形,仅需要枚举圆心P到矩形四个顶点的距离,对四个距离取最大值即可。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int x1 = scanner.nextInt();int y1 = scanner.nextInt();int x2 = scanner.nextInt();int y2 = scanner.nextInt();int x0 = scanner.nextInt();int y0 = scanner.nextInt();double r1 = calDis(x0, y0, x1, y1);double r2 = calDis(x0, y0, x1, y2);double r3 = calDis(x0, y0, x2, y1);double r4 = calDis(x0, y0, x2, y2);double r = Math.max(Math.max(r1, r2), Math.max(r3, r4));double pi = 3.1415926536;double area = r * r * pi;System.out.println(area);}public static double calDis(int x1, int y1, int x2, int y2) {return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));}
}
【模拟】科大讯飞2023非凡计划-数组的最小距离
题目描述与示例
题目描述
小红定义两个数组
a和b之间的距离为
即每个位置的差的绝对值之和,其中
n为数组的长度。小红现在可以进行任意次操作,选择任意数组的任意一个元素,使其乘以-1。小红希望最终两个数组的距离尽可能小。你能帮帮她吗?
输入描述
第一行输入一个正整数, 代表两个数组的长度。
第二行输入
n个整数ai,代表第一个数组。第三行输入
n个整数bi,代表第二个数组。输出描述
一个整数,代表两个数组的最小距离。
示例
输入
3
1 2 3
-3 2 -1输出
4
解题思路
由于我们可以任意地选择
a数组或b数组中的任意一个元素进行操作,对于第i个位置的两个元素差值a[i]-b[i]而言,通过对a[i]或者b[i]进行乘-1的操作可以获得以下四种情况
a[i]-b[i]
a[i]+b[i]
-a[i]-b[i]
-a[i]+b[i]取绝对值号后,实际上只有两种情况
abs(a[i]-b[i]) = abs(-a[i]+b[i])
abs(a[i]+b[i]) = abs(-a[i]-b[i])故总的答案应该为每一个位置的
abs(a[i]-b[i])和abs(a[i]+b[i])中的较小值,再进行求和。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] a = new int[n];int[] b = new int[n];for (int i = 0; i < n; i++) {a[i] = scanner.nextInt();}for (int i = 0; i < n; i++) {b[i] = scanner.nextInt();}int ans = 0;for (int i = 0; i < n; i++) {ans += Math.min(Math.abs(a[i] - b[i]), Math.abs(a[i] + b[i]));}System.out.println(ans);}
}
相关文章:
【刷题宝典NO.1】
Nim游戏 https://leetcode.cn/problems/nim-game/description/ 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人…...
如何在深度学习领域取得个人的成功
要在深度学习领域取得个人的成功,可以考虑以下建议: 学习深度学习的基础知识:首先,建立坚实的深度学习基础知识是非常重要的。你可以学习深度学习的基本概念、神经网络的原理、常用的深度学习框架(如TensorFlow、PyTor…...
数据结构【DS】B树
m阶B树的核心特性: Q:根节点的子树数范围是多少?关键字数的范围是多少? A:根节点的子树数∈[2, m],关键字数∈[1, m-1]。 Q:其他结点的子树数范围是多少?关键字数范围是多少? Q:对任…...
Chatgpt网页版根据关键词自动批量写原创文章软件【可多开自动登录切换gpt账号】
Chatgpt网页版根据关键词自动批量写原创文章软件介绍: 1、需要放入GPT账号和密码放入在账号库.txt里,可以放入多组账号密码,账号切换轮流使用。 2、可以自定义回答指令,也可多个回答指令随机切换。 3、可以给关键词加双标题&…...
研发效能认证学员作品:快速进行持续集成应用实践丨IDCF
作者:赖嘉明 研发效能(DevOps)工程师认证学员 随着数字化转型的推进及市场竞争的加剧,越来越多的企业也意识到持续集成的重要性。 而持续集成作为一种先进的软件开发实践和工具链,可以帮助企业实现自动化构建、集成和…...
中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线,可以进入轻松学编程
中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线,可以进入轻松学编程 学习编程捷径:(不论是正在学习编程的大学生,还是IT人士或者是编程爱好者,在学习编程的过程中用正确的学习方法 可以达到事半…...
2024年最新水果音乐制作软件FL Studio21需要多少钱呢?
水果,全称Fruity Loop Studio,简称FL Studio。是一款全能的音乐制作软件,经过二十多年的演化更迭,其各项功能非常的先进。其开创性的Pat\song模式,也为初学者的学习提供了便利。那么水果音乐制作软件FL Studio21需要多…...
当生成式AI遇到业务流程管理,大语言模型正在变革BPM
生成式AI对各领域有很大影响,一个方面在于它改变了很多固有业务的工作流。 工作流(Workflow)是业务流程的一种实现方式,一个业务流程往往包含多个工作流范式以及相关的数据、组织和系统。 因此,提及工作流必然离不开业…...
Kotlin数据流概览
文章目录 一 什么是数据流二 创建数据流三 修改数据流四 从数据流中进行收集五 数据流捕获异常六 在不同 CoroutineContext 中执行七 Jetpack 库中的数据流八 将基于回调的 API 转换为数据流 一 什么是数据流 数据流以协程为基础构建,可提供多个值。从概念上来讲&a…...
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
1、在vscode终端执行 get-ExecutionPolicy ,显示Restricted,说明状态是禁止的。 2、更改状态: set-ExecutionPolicy RemoteSigned 出现需要管理员权限提示,可选择执行 Set-ExecutionPolicy -Scope CurrentUser 出现的ExecutionPolicy参数后输…...
036-第三代软件开发-系统时间设置
第三代软件开发-系统时间设置 文章目录 第三代软件开发-系统时间设置项目介绍系统时间设置演示效果QML 实现小伙伴自创 TumblerQt 家 Tumbler C 端实现 总结一下 关键字: Qt、 Qml、 Time、 时间、 系统 项目介绍 欢迎来到我们的 QML & C 项目!…...
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
下面介绍四道题目和解法 1.杨氏矩阵 算法:右上角计算 题目:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复杂度小于O(N…...
PX4天大bug,上电反复重启,连不上QGC!
一、Debug与Bug 由于自己写的代码CPU占用率过高,解锁报错 CPU load too high!无法解锁。 于是把 COM_CPU_MAX 从默认的 90% 变为 99%(千万别这样搞,这是bug,除非想玩!)。 然后重启,飞机就反…...
归并排序——
之前我们学习过把两个有序数组合并再一起后任然有序,就叫归并; 那么,排序是否也可以把一个要排序的数组分割成两个有序的数组,然后归并,之后再拷贝回原数组,就实现了排序 但是怎么才能控制分割成的数组是有…...
阿里云企业邮箱基于Spring Boot快速实现发送邮件功能
邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。 邮件协议 下面先简单了解一下常见的邮件协议。常用的电子邮件协议有SMTP、…...
大数据Doris(十三):创建用户和创建数据库并赋予权限
文章目录 创建用户和创建数据库并赋予权限 一、创建用户...
【Unity小技巧】可靠的相机抖动及如何同时处理多个震动
文章目录 每篇一句前言安装虚拟相机虚拟相机震动测试代码控制震动清除震动控制震动的幅度和时间 两个不同的强弱震动同时发生源码完结 每篇一句 围在城里的人想逃出来,站在城外的人想冲进去,婚姻也罢,事业也罢,人生的欲望大都如此…...
Megatron-LM GPT 源码分析(四) Virtual Pipeline Parallel分析
引言 本文接着上一篇【Megatron-LM GPT 源码分析(三) Pipeline Parallel分析】,基于开源代码 GitHub - NVIDIA/Megatron-LM: Ongoing research training transformer models at scale ,通过GPT的模型运行示例,从三个维…...
IOC课程整理-8 Spring Bean作用域
1 Spring Bean作用域 2" singleton " Bean作用域 3" prototype " Bean作用域 • 注意事项 • Spring 容器没有办法管理 prototype Bean 的完整生命周期,也没有办法记录实例的存在。销毁回调方法将不会执行,可以利用 BeanPostProces…...
本地websocket服务端暴露至公网访问【内网穿透】
本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...



