博弈论总结

前言

本篇为博弈论总结,文章会按题目类型分类。

基础铺垫——必胜点和必败点的介绍

P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败。
N点:必胜点,处于此情况下,双方操作均正确的情况下必胜。
必胜点和必败点的性质:
1、所有终结点是 必败点 P 。(我们以此为基本前提进行推理,换句话说,我们以此为假设)
2、从任何必胜点N 操作,至少有一种方式可以进入必败点 P。
3、无论如何操作,必败点P 都只能进入 必胜点 N。
我们研究必胜点和必败点的目的是为题进行简化,有助于我们的分析。通常我们分析必胜点和必败点都是以终结点进行逆序分析。

思路清晰的题目

分析决策前后的不变量

(一)考虑奇偶性的变化

(二)考虑总量的不变性

对称构造

从特殊情况入手

(一)从最简单的必胜态入手

(二)从最简单的必败态入手

(三)从固定参数的情况进行讨论

(四)分析参数之间的大小关系

博弈树

(一)博弈树基础

(二)简单优化

(三)极大极小搜索和alpha-beta剪枝

经典博弈问题及其拓展问题

(一)巴什博奕

普通巴什博奕

1.问题模型:
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜(谁拿了最后一个谁赢)。

2.解决:
当n=m+1时,由于一次最多只能取m个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜,所以当一方面对的局势是n%(m+1)=0时,其面临的是必败的局势

当n=(m+1)*r+s时,(r为任意自然数,0 < s ≤ m)时,只要先取者要拿走s个物品,局面便变成了n%(m+1)=0的必败局面,所以先取者必胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。

3.变形:条件不变,改为最后取光的人输。
结论:当(n-1)%(m+1)==0时后手胜利。

巴什博奕的扩展——k倍动态减法游戏

1.问题模型:
有一个整数S(>=2),先行者在S上减掉一个数x,至少是1,但小于S。之后双方轮流把S减掉一个正整数,但都不能超过先前一回合对方减掉的数的k倍,减到0的一方获胜。

2.解决:
法一:曹钦翔的《从“k倍动态减法游戏”出发探究一类组合游戏问题》中提到了动态规划的优化算法
咕咕咕。。。

法二:纯数学方法
k=1的时候
必败态是2 ^ i, 因为我们把数按二进制分解后,拿掉二进制的最后一个1,那么对方必然不能拿走倒数第二位的1,因为他不能拿的比你多。你只要按照这个策略对方一直都不可能拿完,而且一定会生成新的低位的1。所以你就会赢。而当分解的二进制中只有一个1时,因为第一次先手不能全部取完,所以后手一定有办法取到最后一个1,所以必败!

k=2的时候
即为斐波那契博弈必败态是斐波那契数列,这里用到一个斐波那契数列的性质,即任何数都可以表示成若干个“互不相邻的”斐波那契数的和,而不相邻的斐波那契数所差的倍数都是大于2的,那么我们就可以类比K=1的情况,把N按这种“斐波那契数列”的数制分解,每次仍然是取走最低位的1,由于后手无法取走高两位之上的1而前边的不相邻有保证了不会有连续的1出现,所以接下来就和K=1的时候一样了,每次取走最低位的1直到结束。

k>2的时候
犹如Fibonacci博弈,我们首先要求一个数列,将n分解成数列中一些项的和,然后就可以按Fibonacci博弈的解决方法来完成,也可以按二进制的方法来理解,每次取掉最后一个1 还是符合上面的条件。

我们用a数组表示要被求的数列,b数组中的b[i]保存 a[0…i] 组合能够构造的最大数字。这儿有点难理解,所谓构造就是指n分解为Fib数相加的逆过程。举例说明,当k = 2 时,a[N]={1, 2, 3, 5, 8, 13, 21, 33…} (Fibonacci数组);那么b[3] 即 1、2、 3 能够构造的最大数字,答案是4,有点匪夷所思?或许你会问为什么不是5、6或者其它的什么,其实是这样的 ,4 能分解成 1+3 是没有争议的,但5能分解成2+3吗? 不能,因为5本身也是Fibonacci数;6虽然能分解,但不是分解成1+2+3,而是分解成1+5。

经过上述,我们知道b[i] 是 a[0…i] 能够构造出的最大数字,那么a[i +1] = b[i]+1;因为a数组(Fib数组)所存的数字都是不可构造的(取到它本身就是必败态),显然a[0…i]构造的最大数字 + 1 即为下一个不可构造的数字了(a[i + 1])。

然后关于b[i]的计算,既然是a[0…i]构造最大数字,那么 a[i]是一定要选用的(这儿需要一定的推理,a[i]构造数字时,相邻的j个是不能同时用的,就像上述的2、3不能构造出5一样,推理请自己完成),那么要选用的下一项只能递减寻找,直到找到 a[t] 满足 a[t] * K < a[i] ,而b[t]就是a[0…t]所能构造的最大数字,再加上a[i], 即为a[0…i]能构造的最大数字,于是b[i] = b[t] + a[i]。

求得数列后,之后的工作就简单了,跟Fibonacci博弈一样一样的,如果n=数列中的数,则必败,否则必胜;必胜时还要求输出第一步取法,按照上文的理解,将n分解之后,选择最小的一个a[i]即可(类似选择二进制的最小的1)。

(二)威佐夫博弈

1.问题模型:
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

2.解决:
(ak,bk)(a_k,b_k)(ak,bk)(ak≤bk,k=0,1,2,…,n)(a_k ≤ b_k,k=0,1,2,…,n)(akbk,k=0,1,2,,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。

如何找出所有的奇异局势?
下面证明,根据下面的方法,可以构造出所有的必败态
a. (0,0)是必败态。
b.第k个必败态的两个数相差为k(记(0,0)为第0个必败态)。
c. 已知前k个必败态,则最小的没出现过的正整数为第k+1个必败态的第一个数。
由构造方法,可以推出奇异局势的下述三条性质
a.任何自然数都包含在一个且仅有一个奇异局势中。
由于aka_kak是未在前面出现过的最小自然数,所以有ak>ak−1a_k > a_{k-1}ak>ak1 ,而 bk=ak+k>ak−1+k−1=bk−1>ak−1b_k= a_k + k > a_{k-1} + k-1 = b_{k-1} > a_{k-1}bk=ak+k>ak1+k1=bk1>ak1 。所以性质a成立。
b.任意操作都会将奇异局势变为非奇异局势。
事实上,若只改变奇异局势(ak,bk)(a_k,b_k)(ak,bk)的某一个分量,那么另一个分量不可能在其他奇异局势中,所以必然是非奇异局势。如果使(ak,bk)(a_k,b_k)(ak,bk)的两个分量同时减少,则由于其差不变,且不可能是其他奇异局势的差,因此也是非奇异局势。
c.采用适当的方法,可以将非奇异局势变为奇异局势。

1.若a=b,则同时从两堆中取走 a 个物体,就变为了奇异局势(0,0)
2.若a!=b,不妨设a<b
(1)若a=ak且b<bka=a_k且b<b_ka=akb<bk:同时从两堆中取走ak−ab−aka_k-a_{b-a_k}akabak个物体,就变为了奇异局势(ab−ak,ab−ak+b−ak)(a_{b-a_k},a_{b-a_k}+b-a_k)(abak,abak+bak)
(2)若a=ak且b>bka=a_k且b>b_ka=akb>bk:从b堆中取走b−bkb-b_kbbk个物品,就变为了奇异局势(ak,bk)(a_k,b_k)(ak,bk)

求奇异局势的公式ak=⌊k(1+5)2⌋,bk=ak+ka_k=\left\lfloor\dfrac{k(1+\sqrt5)}{2}\right\rfloor,b_k= a_k+kak=2k(1+5),bk=ak+k (k=0,1,2,...,n)(k=0,1,2,...,n)(k=0,1,2,...,n)

结论:
(int)((bk−ak)∗(1+5)/2)!=ak(int)((b_k-a_k) * (1+\sqrt5)/2) != a_k(int)((bkak)1+5/2)!=ak,先手必赢
(int)((bk−ak)∗(1+5)/2)==ak(int)((b_k-a_k) * (1+\sqrt5)/2) == ak(int)((bkak)1+5/2)==ak,后手必赢

(三)尼姆博奕

普通尼姆博弈

1.问题模型:
有n堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。

2.解决:
结论:记各堆物品个数分别为a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1,a2,a3,...,an
a1xora2xora3...xoran!=0a_1\space xor\space a_2\space xor \space a_3...xor\space a_n != 0a1 xor a2 xor a3...xor an!=0,先手必胜
a1xora2xora3...xoran==0a_1\space xor\space a_2\space xor \space a_3...xor\space a_n == 0a1 xor a2 xor a3...xor an==0,先手必败

尼姆博弈的拓展

扩展形式1:限定每次取物上限

1.问题模型:
有n堆物品,其中第i堆有pip_ipi个物品,两人轮流从某一堆取走一些物品,每次最多取走m个物品,谁不能继续取谁就输了。

2.解决:
结论令S为pip_ipi对m+1取模后异或和的结果,若S=0则为P局面,否则为N局面。

证明:将pip_ipi分解为rir_irikik_iki,其中 kik_iki为(m+1)的倍数。如果对手在rir_iri内取物,则按照Nim游戏的走法,若不然,假设A取x个,那么B就取(m+1-x)个,使得游戏保持原有必胜态或必败态。

拓展形式2:每次允许从k堆中取物(Nimk问题)

1.问题模型:
有n堆物品,其中第i堆有pip_ipi个物品,两人轮流从k堆中选若干物品取走,谁不能继续取谁就输了。

2.解决:
结论我们把pip_ipi这n个数转成二进制,然后每位分别相加,每位和%(k+1)即可。如果每一位结果都是0,则为P局面,否则为N局面。

扩展形式3:规定取物方向(阶梯Nim)

1.问题模型:
有 n堆石子,每堆石子的数量为 x1,x2,...,xnx_{1},x_{2},...,x_{n}x1,x2,...,xn。A,B轮流操作,每次可以选第 k 堆中的任意多个石子放到第 k-1 堆中,第 1堆中的石子可以放到第 0堆中,最后无法操作的人为输。

2.解决:
结论先手必败当且仅当奇数阶梯上的石子数异或和为 0

拓展形式4:不能继续取者赢(Anti-Nim)

1.问题模型:
有n堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得输。

2.解决:
结论
1.每一堆石子只有一个 且 异或和为0
2.存在至少一堆石子多于一个 且 异或和不为0
满足上述任意一个条件,先手必胜

公平组合博弈(ICG)

1.定义:
(1)两人参与。
(2)游戏局面的状态集合是有限。
(3)对于同一个局面,两个游戏者的可操作集合完全相同
(4)游戏者轮流进行游戏。
(5)当无法进行操作时游戏结束,此时不能进行操作的一方算输。
(6)无论游戏如何进行,总可以在有限步数之内结束。

2.模型:
给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移动者判负。事实上,这个游戏可以认为是所有公平组合游戏(Impartial Combinatori Games)的抽象模型。其实,任何一个ICG都可以通过把每个局势看成一个顶点,对每个局势和它的子局势连一条有向边来抽象成这个“有向图游戏”。

SG函数与SG定理

1.SG函数(Sprague-Grundy函数):

首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。

对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数SG如下:SG(x)=mex{SG(y)∣y是x的后继}SG(x)=mex\{ SG(y) | y是x的后继\}SG(x)=mex{SG(y)yx}

SG函数性质:
(1)所有的终结点所对应的顶点,其SG值为0,因为它的后继集合是空集——所有终结点是必败点(P点)。
(2)对于一个SG(x)=0SG(x)=0SG(x)=0的顶点x,它的所有后继y都满足SG(y)!=0SG(y)!=0SG(y)!=0——无论如何操作,从必败点(P点)都只能进入必胜点(N点)
(3)对于一个SG(x)!=0SG(x)!=0SG(x)!=0的顶点,必定存在一个后继点y满足SG(y)=0SG(y)=0SG(y)=0——从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点)

结论:
当SG[x] = 0时,x为必败态。
当SG[x] > 0时,x为必胜态。

SG函数的求法:

1)可选步数为1-m的连续整数,直接取模即可,SG(x) = x % (m+1)(eg.Bash game);2)可选步数为任意步,SG(x) = x(eg.Nim game);3)通法:用mex(计算每个节点的值)

2.SG定理(Sprague-Grundy定理):

游戏和的SG函数等于各个游戏SG函数的Nim和。 这样就可以将每一个子游戏分而治之,从而简化了问题。
而Bouton定理就是Sprague-Grundy定理在Nim游戏中的直接应用,因为单堆的Nim游戏 SG函数满足 SG(x)=xSG(x) = xSG(x)=x

三类特殊的SG游戏

Anti-SG游戏

1.定义:
Anti-SG游戏规定,决策集合为空的游戏者赢。其他规则与SG游戏相同。

2.SJ定理
对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当:
1)游戏的SG函数不为0 且 游戏中某个单一游戏的SG函数大于1。
2)游戏的SG函数为0 且 游戏中没有单一游戏的SG函数大于1。

注意:如果所有单一游戏SG值都为0,而游戏还未结束的话,SJ定理是不适用的。

Multi-SG游戏

1.定义:
Multi-SG游戏规定,在符合拓扑原则的前提下,一个单一游戏的后继可以为多个单一游戏,其他规则与SG游戏相同。

2.定理:Multi-SG游戏的仍然可以用SG函数来定义局面。

注意区分后继以及多个单一游戏
对于一个状态来讲
不同的划分方法会有多个不同的后继
而在一个后继当中会有多个独立的游戏
该后继状态SG值即为后继状态中独立游戏的异或和
该状态的SG值即为后继状态的mex

Every-SG游戏

1.定义:
Every-SG游戏规定,对于还没有结束的单一游戏,游戏者必须对该游戏进行一步决策,其他规则与SG游戏相同。

2.定理:
step函数step函数step
在通过拓扑关系计算某一个状态点的SG函数时,对于SG值为0的点,我们需要知道最快几步能将游戏带入终止状态,对于SG值不为0的点,我们需要知道最慢几步游戏会被带入终止状态,我们用step函数表示这个值。

Every−SG定理Every-SG定理EverySG
对于Every-SG游戏,先手必胜当且仅当单一游戏中最大的step为奇数。

经典的SG组合游戏

(1)“翻硬币”游戏

(2)图游戏模型

(3)无向图的删边游戏

(4)Shannon开关游戏

(5)其他题目

不平等的组合游戏

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

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

相关文章

牛客网【每日一题】5月8日题目精讲 codeJan与旅行

比赛链接&#xff1a; 文章目录题目描述题解&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 codeJan 非常喜欢旅行。现在有 n 个城市排在一条线上&#xff0c;并…

.netcore consul实现服务注册与发现-集群完整版

一、Consul的集群介绍Consul Agent有两种运行模式&#xff1a;Server和Client。这里的Server和Client只是Consul集群层面的区分&#xff0c;与搭建在Cluster之上的应用服务无关&#xff0c; 以Server模式运行的Consul Agent节点用于维护Consul集群的状态&#xff0c;官方建议每…

【矩阵乘法】【倍增】WYC(luogu 3597)

WYC 题目大意 给你一个有向图&#xff0c;让你求图中的kkk短路&#xff08;非简单路径&#xff09; 输入样例# 6 6 11 1 2 1 2 3 2 3 4 2 4 5 1 5 3 1 4 6 3输出样例#1 4数据范围 1⩽n⩽40&#xff0c;1⩽m⩽1000&#xff0c;1⩽k⩽10181\leqslant n\leqslant 40&#xff…

匹配(树形DP)

传送门 题目描述&#xff1a; 有一张无向联通图 G⟨V,E⟩ &#xff0c;其中顶点数 |V|n &#xff0c;边数 |E|n−1 。求有多少种方案使得删边后残余图中的最大匹配数恰好为 m 的倍数。 题解&#xff1a; 这道题看起来是求最大匹配&#xff0c;其实关系不大&#xff0c;正解…

博弈论讲解(一)

常见的博弈论有巴什博弈&#xff0c;威佐夫博弈&#xff0c;尼姆博弈&#xff0c;斐波那契博弈等等&#xff0c;今天暂时讲几个 文章目录一.巴什博弈证明&#xff1a;代码二.威佐夫博奕结论&#xff1a;代码&#xff1a;三.环形博弈结论证明代码&#xff1a;一.巴什博弈 巴什博…

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作&#xff0c;此版本通过nuget下载引擎组件&#xff0c;下载后&#xff0c;无需通过代码build集成&#xff0c;引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎&#xff0c;而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼&#xff09;&#xff0c;手残把&打成整除了&#xff08;大样例还对了gg&#xff09; T2乱推&#xff0c;然后打了个O(n)O(n)O(n)&#xff0c;却WA了15分&#xff1f; T3看了看&#xff0c;修改不会相互影响&#xff1f;那不…

51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1220 题目大意 给出nnn&#xff0c;求∑i1n∑j1nσ(i∗j)\sum_{i1}^n\sum_{j1}^n\sigma(i*j)i1∑n​j1∑n​σ(i∗j) 其中σ\sigmaσ表示约数和。 解题思路 首先有结论σ(i∗j)∑x∣i∑y∣j[gcd(x,y)1]…

CDQ分治与整体二分

首先说明&#xff0c;CDQ分治与整体二分都是离线算法 CDQ分治&#xff1a; 流程&#xff1a; 1.我们要解决一系列问题&#xff0c;这些问题一般包含修改和查询操作&#xff0c;可以把这些问题排成一个序列&#xff0c;用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题&#xff1a;结论证明&#xff1a;尼姆博奕(Nimm Game)问题&#xff1a;结论&#xff1a;证明&#xff1a;代码&#xff1a;公平组合博弈&#xff08;Impartial Combinatori Games&#xff09;理论知识&#xff08;1&#xff09;、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core&#xff08;开篇&#xff09;》简单的介绍了&#xff08;水了一篇&#xff09;.net core。这次针对短信服务的架构设计和技术栈的简析。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…

字符串hash(一)

很久没遇到过hash的题了&#xff0c;今天来重新温故一下 文章目录序言常用的几个字符串hash方法&#xff1a;hash公式&#xff08;自然溢出&#xff09;讲解模板单hash讲解模板双hash讲解代码总结序言 你有没有想过&#xff0c;字符串存储一大溜&#xff0c;比较时又麻烦又折腾…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试&#xff0c;CAP 2.3 版本终于发布了&#xff0c;这个版本最大的特性就是对于 MongoDB 的支持&#xff0c;感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR&#xff0c;相信随着博客园的使用&#xff0c;CAP 会越来越多的帮助到更多的人。CAP …

【矩阵乘法】递推(ssl 1532)

递推 ssl 1532 题目大意 给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​ fia0∗fi−na1∗fi−(n−1)...an−1∗fi−1anf_ia_0*f_{i-n}a_1*f_{i-(n-1)}...a_{n-1}*f_{i-1}a_nfi​a0​∗fi−n​a1​∗fi…

P3185-[HNOI2007]分裂游戏【SG函数】

正题 题目链接:https://www.luogu.com.cn/problem/P3185 题目大意 nnn个瓶子&#xff0c;开始第iii个里有pip_ipi​个糖果&#xff0c;操作的人可以找到一个三元组(i,j,k)i<j≤k(i,j,k)\ i<j\leq k(i,j,k) i<j≤k然后取出iii中的一个糖果&#xff0c;在j,kj,kj,k中各…

牛客网 【每日一题】5月9日 过河

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 在河上有一座独木桥&#xff0c;一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子&#xff0…

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的&#xff0c;其提供了操作系统级别的抽象&#xff0c;是一种容器管理技术&#xff0c;它隔离了应用程序对基础架构&#xff08;操作系统等&#xff09;的依赖。相较于虚拟机而言&#xff0c;Docker共享的是…

【矩阵乘法】幼儿园数学题I(ssl 2513)

幼儿园数学题I ssl 2513 题目大意 定义fn(512)n−1f_n\left ( \frac{\sqrt{5}1}{2}\right )^{n-1}fn​(25​1​)n−1&#xff0c;求前n项的和,&#xff08;对109710^971097取模&#xff09;&#xff08;题目貌似出了些问题&#xff0c;实际上fff等价于斐波那契数列&#xff…