【笔试】备战秋招,每日一题|20230415携程研发岗笔试

news/2024/4/26 17:29:39/文章来源:https://blog.csdn.net/weixin_43900869/article/details/130354268

前言

最近碰到一个专门制作大厂真题模拟题的网站 codefun2000,最近一直在上面刷题。今天来进行2023.04.15携程研发岗笔试,整理了一下自己的思路和代码。

比赛地址

A. 找到you

题意:

给定一个仅包含小写字母的 n × n n\times n n×n 的矩阵,问这个矩阵中所有 2 × 2 2\times 2 2×2 的矩阵中同时包含 you 三个字符的子矩阵数量。

数据范围: 1 ≤ n , m ≤ 1000 1\leq n, m\leq 1000 1n,m1000

题解:

暴力枚举每个 2 × 2 2\times 2 2×2 子矩阵,对于每个子矩阵,判断其之中是否同时存在 you 三个字符即可,共需要枚举 ( n − 1 ) × ( m − 1 ) (n - 1) \times (m - 1) (n1)×(m1) 个子矩阵。

时间复杂度分析: O ( n m ) O(nm) O(nm)

#include <bits/stdc++.h>
using namespace std;const int N = 1010;
char s[N][N];
int n, m;bool check(int i, int j) {int val = 0;for (int x = 0; x < 2; ++x)for (int y = 0; y < 2; ++y) {if (s[i + x][y + j] == 'y') val |= 1 << 0;if (s[i + x][y + j] == 'o') val |= 1 << 1;if (s[i + x][y + j] == 'u') val |= 1 << 2;}return val == 7;
}int main()
{scanf("%d%d", &n, &m);;for (int i = 1; i <= n; ++i) scanf("%s", s[i] + 1);int ans = 0;for (int i = 1; i + 1 <= n; ++i)for (int j = 1; j + 1 <= m; ++j) {if (check(i, j)) ans += 1;}printf("%d\n", ans);return 0;
}

B. 最小公倍数

题意:

T T T 组数据,每组数据给定一个 n n n,现在问在 a + b = n a + b = n a+b=n 的情况下,使得 l c m ( a , b ) lcm(a, b) lcm(a,b) 最大的 a a a b b b 是多少?

数据范围: 1 ≤ T ≤ 1 0 5 , 2 ≤ n ≤ 1 0 13 1\leq T\leq 10^5, 2\leq n\leq 10^{13} 1T105,2n1013

题解:

T T T 组数据,而 T T T 最大为 1 0 5 10^5 105 ,则每组数据至多要在 O ( log ⁡ n ) O(\log n) O(logn) 的时间解决,因为这个题需要求 l c m lcm lcm,这个求解的复杂度是 O ( log ⁡ n ) O(\log n) O(logn) 的,
所以判断的操作得在 O ( 1 ) O(1) O(1) 时间复杂度内。

下面我们都认为 a ≤ b a \leq b ab
当两个数 a a a b b b ,满足 a + 1 = b a + 1 = b a+1=b ,那么此时 a a a b b b 互质, l c m ( a , b ) = a × b lcm(a, b) = a \times b lcm(a,b)=a×b

考虑奇数:将其拆分成 a = ⌊ n 2 ⌋ , b = ⌈ n 2 ⌉ a = \lfloor\frac{n}{2}\rfloor, b = \lceil\frac{n}{2}\rceil a=2n,b=2n,有 a + 1 = b a + 1 = b a+1=b,故此时最大的 l c m ( a , b ) lcm(a, b) lcm(a,b) 就是 a = ⌊ n 2 ⌋ , b = ⌈ n 2 ⌉ a = \lfloor\frac{n}{2}\rfloor, b = \lceil\frac{n}{2}\rceil a=2n,b=2n
考虑偶数:将其拆分成 a = n 2 , b = n 2 a = \frac{n}{2}, b = \frac{n}{2} a=2n,b=2n l c m ( a , b ) = n 2 lcm(a, b) = \frac{n}{2} lcm(a,b)=2n

因为 n n n 是偶数,所以拆分出必然是要么 a a a b b b 均为偶数,要么 a a a b b b 均为奇数。
这里有一个结论,对于正数 a , b , n a,b,n a,b,n,如果有 a + b = n a + b = n a+b=n,且 a a a b b b 均为奇数,则 g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1

n = 2 n=2 n=2,只有一种拆分法: a = 1 , b = 1 a=1,b=1 a=1,b=1

n > 2 n>2 n>2,对于拆分 a = 1 , b = n − 1 , l c m ( 1 , n − 1 ) = l c m ( n 2 , n 2 ) a=1,b=n-1,lcm(1,n-1)=lcm(\frac{n}{2},\frac{n}{2}) a=1,b=n1lcm(1,n1)=lcm(2n,2n),所以 a = n 2 , b = n 2 a=\frac{n}{2},b=\frac{n}{2} a=2n,b=2n这个拆分必然不如其他任意一个拆分。

此外,下面的讨论都只针对大于 2 2 2 的偶数。

所以对于一个数 n n n,我们至多只需要考虑 2 2 2 个位置,因为其他位置都不如这些位置中的任意一个:

n 2 \frac{n}{2} 2n 为奇数,

  • a = n 2 − 1 , b = n 2 + 1 , l c m ( a , b ) = a × b g c d ( a , b ) = ( n 2 − 1 ) × ( n 2 + 1 ) 2 a = \frac{n}{2} - 1, b = \frac{n}{2} + 1, lcm(a,b)=\frac{a \times b}{gcd(a,b)}=\frac{(\frac{n}{2} - 1)\times (\frac{n}{2} + 1)}{2} a=2n1,b=2n+1,lcm(a,b)=gcd(a,b)a×b=2(2n1)×(2n+1),因为 b − a = 2 b-a=2 ba=2,且 a a a b b b 都是偶数,故 g c d ( a , b ) = 2 gcd(a,b)=2 gcd(a,b)=2
  • a = n 2 − 2 , b = n 2 + 2 , l c m ( a , b ) = a × b g c d ( a , b ) = ( n 2 − 2 ) × ( n 2 + 2 ) 1 a = \frac{n}{2} - 2, b = \frac{n}{2} + 2,lcm(a,b)=\frac{a \times b}{gcd(a,b)}=\frac{(\frac{n}{2} - 2)\times (\frac{n}{2} + 2)}{1} a=2n2,b=2n+2,lcm(a,b)=gcd(a,b)a×b=1(2n2)×(2n+2),因为 b − a = 4 b-a=4 ba=4,故公约数只能为 1 , 2 , 4 1,2,4 1,2,4,且 a a a b b b 都是奇数,故最大公约数只能为 1 1 1

n 2 \frac{n}{2} 2n 为偶数,

  • a = n 2 − 1 , b = n 2 + 1 , l c m ( a , b ) = a × b g c d ( a , b ) = ( n 2 − 1 ) × ( n 2 + 1 ) 1 a = \frac{n}{2} - 1, b = \frac{n}{2} + 1, lcm(a,b)=\frac{a \times b}{gcd(a,b)}=\frac{(\frac{n}{2} - 1)\times (\frac{n}{2} + 1)}{1} a=2n1,b=2n+1,lcm(a,b)=gcd(a,b)a×b=1(2n1)×(2n+1),因为 b − a = 2 b-a=2 ba=2,故公约数只能为 1 , 2 1, 2 1,2,且 a a a b b b 都是奇数,故 g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1
  • a = n 2 − 2 , b = n 2 + 2 , l c m ( a , b ) = a × b g c d ( a , b ) = ( n 2 − 2 ) × ( n 2 + 2 ) g c d ( a , b ) ≥ 2 a = \frac{n}{2} - 2, b = \frac{n}{2} + 2,lcm(a,b)=\frac{a \times b}{gcd(a,b)}=\frac{(\frac{n}{2} - 2)\times (\frac{n}{2} + 2)}{gcd(a,b)\geq2} a=2n2,b=2n+2,lcm(a,b)=gcd(a,b)a×b=gcd(a,b)2(2n2)×(2n+2),因为 b − a = 4 b-a=4 ba=4,故公约数只能为 1 , 2 , 4 1,2,4 1,2,4,且 a a a b b b 都是偶数,故最大公约数至少为 2 2 2

上面已经说明了,对于本题中的 a + b = n a+b=n a+b=n a × b > ( a − 1 ) × ( b + 1 ) = a × b + a − b − 1 a \times b > (a - 1) \times (b + 1) = a \times b + a - b - 1 a×b>(a1)×(b+1)=a×b+ab1
因为 a − b − 1 < 0 a - b - 1 < 0 ab1<0,故 a × b > ( a − 1 ) × ( b + 1 ) a \times b > (a - 1) \times (b + 1) a×b>(a1)×(b+1)

n 2 \frac{n}{2} 2n 为奇数,
l c m ( n 2 − 1 , n 2 + 1 ) − l c m ( n 2 − 2 , n 2 + 2 ) = ( n 2 8 − 1 2 ) − ( n 2 4 − 4 ) = 28 − n 2 8 lcm(\frac{n}{2}-1,\frac{n}{2}+1)-lcm(\frac{n}{2}-2,\frac{n}{2}+2)=(\frac{n^2}{8}-\frac{1}{2})-(\frac{n^2}{4}-4)=\frac{28-n^2}{8} lcm(2n1,2n+1)lcm(2n2,2n+2)=(8n221)(4n24)=828n2,因为 n 2 \frac{n}{2} 2n 为奇数且 n > 2 n>2 n>2,故 n ≥ 6 n\geq6 n6,故 28 − n 2 8 < 0 \frac{28-n^2}{8}<0 828n2<0,故 l c m ( n 2 − 2 , n 2 + 2 ) > l c m ( n 2 − 1 , n 2 + 1 ) lcm(\frac{n}{2}-2,\frac{n}{2}+2)>lcm(\frac{n}{2}-1,\frac{n}{2}+1) lcm(2n2,2n+2)>lcm(2n1,2n+1)

n 2 \frac{n}{2} 2n 为偶数,
l c m ( n 2 − 1 , n 2 + 1 ) > l c m ( n 2 − 2 , n 2 + 2 ) lcm(\frac{n}{2}-1,\frac{n}{2}+1)>lcm(\frac{n}{2}-2,\frac{n}{2}+2) lcm(2n1,2n+1)>lcm(2n2,2n+2)

总结:

n n n 为奇数: a = ⌊ n 2 ⌋ , b = ⌈ n 2 ⌉ a = \lfloor\frac{n}{2}\rfloor, b = \lceil\frac{n}{2}\rceil a=2n,b=2n

n n n 为偶数:

  • n = 2 n = 2 n=2 a = 1 , b = 1 a=1,b=1 a=1,b=1
  • n 2 \frac{n}{2} 2n 为奇数, a = n 2 − 2 , b = n 2 + 2 a = \frac{n}{2} - 2, b = \frac{n}{2} + 2 a=2n2,b=2n+2
  • n 2 \frac{n}{2} 2n 为偶数, a = n 2 − 1 , b = n 2 + 1 a = \frac{n}{2} - 1, b = \frac{n}{2} + 1 a=2n1,b=2n+1

代码:

#include <bits/stdc++.h>
using namespace std;typedef long long ll;void solve() {ll n; scanf("%lld", &n);if (n & 1) {printf("%lld %lld\n", n / 2, n - n / 2);} else {if (n == 2) puts("1 1\n");if ((n / 2) & 1) {printf("%lld %lld\n", n / 2 - 2, n / 2 + 2);} else {printf("%lld %lld\n", n / 2 - 1, n / 2 + 1);}}}int main()
{int T;scanf("%d", &T);while (T--) {solve();}return 0;
}

C.魔法之树

题意:

给定一个 n n n 个点的树,问这棵树上任意一条简单路径,有起点和终点,这条路径上的点构成的二进制字符串对应的十进制数在 [ l , r ] [l, r] [l,r] 范围内的简单路径数。这里的简单路径长度至少为 1 1 1 ,即自己到自己不算在内

数据范围: 1 ≤ n ≤ 1000 , 1 ≤ l ≤ r ≤ 1 0 14 1\leq n\leq 1000, 1\leq l\leq r\leq {10^{14}} 1n1000,1lr1014

题解:
枚举以每个点作为起点,遍历完所有的其他 n − 1 n-1 n1 个点为终点,当遇到值大于 r r r ,则后面的点作为终点的简单路径构成的二进制字符串对应的十进制数都必然大于 r r r 了,不会再可能成为答案了。这里必须要及时判断,一方面可以剪枝,另一方面是为了避免爆 long long

时间复杂度: O ( n 2 ) O(n^2) O(n2)

代码:

#include <bits/stdc++.h>
using namespace std;typedef long long ll;const int N = 1010;
vector<int> g[N];
int n;
ll l, r;
char s[N];
int ans;void dfs(int cur, int u, int fa, ll val) {val = val * 2 + (s[u] - '0');if (val > r) return ;if (val >= l && u != cur) ans += 1;for (int v: g[u]) {if (v == fa) continue ;dfs(cur, v, u, val);}
}void solve() {scanf("%d%lld%lld", &n, &l, &r);scanf("%s", s + 1);for (int i = 1; i < n; ++i) {int a, b;scanf("%d%d", &a, &b);g[a].push_back(b);g[b].push_back(a);}ans = 0;for (int i = 1; i <= n; ++i) {dfs(i, i, 0, 0);}printf("%d\n", ans);
}int main()
{int T = 1;
//    scanf("%d", &T);while (T--) {solve();}return 0;
}

D.01串的回文子串

题意:

给定 n n n 个数 a i a_i ai,当 i i i 为奇数,表示生成 a i a_i ai1,当 i i i 为偶数,表示生成 a i a_i ai0。即生成一个长度为 ∑ i = 1 n a i \sum\limits_{i=1}^n a_i i=1nai 的序列 s s s s [ 1 , a 1 ] = 1 , s [ a 1 + 1 , a 2 ] = 0 , s [ a 2 + 1 , a 3 ] = 1 , s [ a 3 + 1 , a 4 ] = 0 , . . . s[1, a_1]=1,s[a_1+1,a_2]=0,s[a_2+1,a_3]=1,s[a_3+1,a_4]=0,... s[1,a1]=1,s[a1+1,a2]=0,s[a2+1,a3]=1,s[a3+1,a4]=0,... 。问这个序列中有多少个回文子串。答案对 1 0 9 + 7 10^9+7 109+7 取模

数据范围:
1 ≤ n ≤ 1000 , 1 ≤ a i ≤ 1 0 9 1\leq n\leq 1000,1\leq a_i\leq 10^9 1n1000,1ai109

题解:

可以将看成序列看成分为 n n n 块,每块内部都是连续的 0 0 0 1 1 1

考虑每块内部可以生成多少回文子串:一块内部有 x x x 个数,以第 i i i 个数结尾的回文子串数量为 i i i ,即 ∑ i = 1 x i = x × ( x + 1 ) 2 \sum\limits_{i=1}^xi=\frac{x\times (x+1)}{2} i=1xi=2x×(x+1)

再考虑包含第 i i i 块的回文子串数量。那么以第 i i i 块为回文子串中心,向左右扩展。当且仅当左右两个数都相同,会多生成一个回文子串。这个什么时候截止呢,假设我们当前 a [ i − 1 ] = a [ i + 1 ] , a [ i − 2 ] = a [ i + 2 ] , . . . a [ i − p ] = a [ i + p ] a[i-1]=a[i+1],a[i-2]=a[i+2],...a[i-p]=a[i+p] a[i1]=a[i+1],a[i2]=a[i+2],...a[ip]=a[i+p],但是 a [ i − p − 1 ] ≠ a [ i + p + 1 ] a[i-p-1]\neq a[i+p+1] a[ip1]=a[i+p+1],则生成的回文子串数为: m i n ( a [ i − p − 1 ] , a [ i + p + 1 ] ) + ∑ j = 1 p a [ j ] min(a[i-p-1],a[i+p+1])+\sum\limits_{j=1}^p a[j] min(a[ip1],a[i+p+1])+j=1pa[j]

时间复杂度: O ( n 2 ) O(n^2) O(n2)

代码:

#include <bits/stdc++.h>
using namespace std;const int N = 1010;
const int mod = 1e9 + 7;long long a[N];
int n;void solve() {long long ans = 0;scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%lld", &a[i]);ans = (ans + a[i] * (a[i] + 1) / 2) % mod;}for (int i = 2; i < n; ++i) {int L = i - 1, R = i + 1;while (L >= 1 && R <= n) {ans = (ans + min(a[L], a[R])) % mod;if (a[L] == a[R]) L -= 1, R += 1;else break;}}printf("%lld\n", ans);
}int main()
{int T = 1;
//    scanf("%d", &T);while (T--) {solve();}return 0;
}

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

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

相关文章

高分辨率光学遥感图像水体分类综述2022.03

本文是Water body classification from high-resolution optical remote sensing imagery: Achievements and perspectives的学习笔记。 相关资源被作者整理到&#xff1a;这里 文章目录 Introduction基本知识 挑战和机遇挑战1. 有限的光谱信息和小场景覆盖2. 形状、大小和分布…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组&#xff08;一维&#xff09;1.1数组是什么&#xff1f;1.2java中数组静态初始化&#xff1a;&#xff08;存&#xff09;两种定义格式&#xff1a;数组初始化格式&#xff1a;静态初始化后&#xff0c;打印数组名&#xff1a; 1.3 数组元素访问&…

javaweb学生在线考试系统dzkf10程序

打分&#xff09;、系统管理&#xff08;数据备份&#xff09;等功能操作。 以学生的身份在登录页面输入账号和密码&#xff0c;经过数据库身份验证&#xff0c;验证成功后登录系统主页&#xff0c;可以使用个人资料管理、试卷查看、在线考试、在线答疑、个人考试成绩查询等功能…

Oracle的学习心得和知识总结(二十三)|Oracle数据库Real Application Testing之Database Replay相关视图

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

LVS负载均衡-DR

1.DR模式中每台主机都有一个VIP地址 虚拟网址放在lo网卡上&#xff08;回环网卡&#xff09; arp_ignore1 Arp_announce2 系统不使用IP包的源地址来设置ARP请求的源地址&#xff0c;而选择发送接口的IP地址 2.内核参数修改 3.vim /etc/rc.conf 开机自启动 Chmod x /etc/rc.d…

【翻译一下官方文档】之uniapp的导航条设置

目录 uni.setNavigationBarTitle(OBJECT) uni.setNavigationBarColor(OBJECT) uni.hideHomeButton(OBJECT) uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。 OBJECT参数说明 参数类型必填说明titleString是页面标题successFunction否接口调用成功的回调函数fai…

卷积神经网络总结

1、卷积核 进行互相关运算。 卷积核的大小一般是奇数。 卷积核的本质类似于提取局部特征&#xff08;过滤器&#xff09;&#xff0c;当层层卷积核叠加后&#xff0c;卷积核的感受野变大&#xff0c;卷积核的作用逐渐向提取全局抽象特征靠近。最后一层的神经元应该对整个输入…

SpringBoot中@EnableAsync和@Async注解的使用

目录 1.EnableAsync 注解1.1 配置类使用示例1.2 复制请求上下文 2.用法1&#xff1a;Async 注解2.1 测试Controller2.2 测试Service2.3 测试ServiceImpl2.4.测试 4.用法2&#xff1a;直接使用 taskExecutor 做异步4.1 重新实现&#xff1a;测试ServiceImpl4.2 测试 5.Async异步…

ArcGIS三体阴影(影像三维)显示马赛克?

我们经常基于ArcGIS通过DEM来做山体阴影 但是有时候你一放大就会出现很强的马赛克的效果 还有我们在利用ArcScene建三维场景 即使数据分辨率很高也会出现马赛克效果 那怎么来解决这个问题呢 让我们的山体阴影显示更加细腻 三维没有马赛克的效果呢&#xff1f; 右键图层选择如…

地铁站人流检测硬件部分

目录 一、概述 二、驱动程序 2.1debug串口 2.2体重传感器HX711 2.3滴答定时器 2.4ESP8266 2.5人体检测 2.6 IIC的GPIO 2.7 OLED的IIC 2.8 LED 三、应用 四、中断 一、概述 使用STM32C8T6作为主控 A9 ---> tx&#xff08;调试串口&#xff09; A10 ---> …

android framework-ActivityManagerService(AMS)下

一、ActivityThread \frameworks\base\core\java\android\app\ActivityThread.java 1.1、main public static void main(String[] args) {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");// Install selective syscall interceptionAnd…

Hudi数据湖技术之核心概念

目录 1 基本概念1.1 时间轴Timeline1.2 文件管理1.3 索引Index 2 存储类型2.1 计算模型2.1.1 批式模型&#xff08;Batch&#xff09;2.1.2 流式模型&#xff08;Stream&#xff09;2.1.3 增量模型&#xff08;Incremental&#xff09; 2.2 查询类型&#xff08;Query Type&…

4.3调整基类成员在派生类中的访问属性的方法

同名成员 在定义派生类的时候&#xff0c;C语言允许派生类与基类中的函数名相同。如果在派生类中定义了与基类中相同的成员&#xff0c;则称派生类成员覆盖了基类的同名成员&#xff0c;在派生类中使用这个名字意味着访问在派生类中重新说明的成员。为了在派生类中使用基类的同…

C++ -4- 类和对象(下)

文章目录 1.初始化列表什么是初始化列表&#xff1f;初始化列表的 意义及使用 2.explicit关键字单参数构造函数&#xff08;C98&#xff09;多参数的构造函数&#xff08;C11&#xff09;&#xff08;了解&#xff09; 3.static静态成员静态成员变量与静态成员函数静态成员变量…

前端02:CSS选择器等基础知识

CSS基础选择器、设置字体样式、文本样式、CSS的三种引入方式、能使用Chrome调试工具调试样式 HTML专注做结构呈现&#xff0c;样式交给CSS&#xff0c;即结构&#xff08;HTML&#xff09;和样式CSS相分离 CSS主要由量分布构成&#xff0c;选择器以及一条或多条声明 选择器&…

18.Java泛型

目录 1. Java基本介绍 2. JDK下载安装及其环境配置 3. 一个简单的java程序 4. Eclipse基本使用、数据类型、运算符 5. 控制语句&#xff08;if、switch、for、while、foreach&#xff09; 6. Java数组 7. Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner…

OFDM-LS信道估计 MMSE信道估计公式推导

假设ofdmN个子载波之间是完全正交的&#xff0c;即不考虑ICI影响&#xff0c;通过发送训练序列来实现信道估计。 其中&#xff0c;在推导6.8的时候&#xff0c;需要将6.6先拆解一下。 X − 1 Y X − 1 ( X H Z ) X − 1 X H X − 1 Z H X − 1 Z X^{-1}Y X^{-1}(XHZ)…

LeetCode213 打家劫舍 II 动态规划法

题目地址 https://leetcode.cn/problems/house-robber-ii/ 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装…

【Hive实战】探索Hive 2.X以及更早版本的MetaStore

探索Hive 2.X以及更早版本的MetaStore 文章目录 探索Hive 2.X以及更早版本的MetaStore概述配置元数据服务和元数据存储库基础配置参数其他配置参数默认配置配置元服务数据库使用内嵌模式的Derby库使用远程数据存储库 配置元数据服务本地/内嵌服务配置远程服务配置 元数据服务配…

【KingSCADA】什么是精灵图以及如何创建精灵图

大家好&#xff0c;我是雷工&#xff01; 本篇学习精灵图的制作&#xff0c;以下为学习内容及相关笔记。 一、什么是精灵图 精灵图是一种在外观上类似组合图&#xff0c;但内部嵌入了比较丰富的动画链接与逻辑控制&#xff0c;工程开发人员只要将其从精灵图库中调出来放置在开…