2011_google笔试题_完整版

合集下载

Google2011笔试题

Google2011笔试题

Google2011
笔试题
一. 问答题
1. 程序设计:给定2个大小分别为n, m 的整数集合,分别存放在两个数组中 int A[n], B[m],输出两个集合的交集。

2. 银行取款排队模拟
假设银行有4个柜台,假设某天有200位客户来办理业务,每个客户到达银行的时间和业务处理时间分别用两个数组arrive_time 和 process_time 来描述。

请写程序计算所有客户的平均等待时间,假设每个客户在去到营业部之后先拿号排队,然后在任意一个柜台有空闲的时候,号码数最小的客户上去办理,假设所有的客户拿到号码之后不会因为银行众所周知的慢而失去耐心走掉。

3. 对数值范围为 0到 n^2-1的 n 个整数进行排序。

请详细描述算法(若引用经典算法也需要给出具体实现),并分析算法的时间复杂度和空间复杂度。

要求时间复杂度尽量优化,在此前提下空间复杂度尽量优化。

技术QQ 群:157594705 微信:www_nowcoder_com 微博:/nowcoder
登录牛客网,参与以上题目讨论,查看更多笔试面试题
牛客网-中国最大IT 笔试/面试题库
牛客出品-。

谷歌2011校园招聘笔试试题解答

谷歌2011校园招聘笔试试题解答

刚看了个题为《谷歌2011校园招聘笔试试题》的文章,转过来并试图给个解答。

纯属个人行为,与google公司无关,因此选择题答案也不一定正确,欢迎讨论。

如果有google的人看了觉得还可以给个面试机会哈~~~1.1) D1.2) D1.3) C (原选D为错误答案,感谢俞寅涛(他不让我叫他大牛)订正)1.4) 3003(B?)注:经人告知,题目为:“书架上有19本书,编号分别1-19,选取5本,其中任意两本不相邻的的取法有多少,四个选项为A: 2002, B: 3003, C: 11628, D: 360360”。

此题解法如下:考虑第一本位置为x1,第二本为第一本后x2个位置,第三本为第二本后x3个位置。

第五本为第四本后x5个位置。

那么我们有x1+x2+x3+x4+x5<=19, x1>=1, x2,x3,x4,x5>=2。

题目所求即此方程整数解的个数。

变换得x1+x2+x3+x4+x5+x6 = 19, x1>=1, x2,x3,x4,x5>=2, x6>=0。

令x1' = x1,x2'=x2-1, ...,x5'=x5-1, x6'=x6+1,则原方程的解数等于方程x1'+x2'+x3'+x4'+x5'+x6'=16, x1',x2',x3',x4',x5',x6'>=1的整数解的个数。

而我们知道后一方程解的个数为C_15^5 = 3003。

1.5) E1.6) A1.7) A1.8) A (设N<M,最好情况下,N个数比M个数的最小数都小,需要N次比较,感谢俞寅涛(他不让我叫他大牛)订正)1.9) D1.10) C (有朋友表示应该是A,我对此表示赞同,但还是坚持原来的选择C,求正确答案)2.1)double eval(double x, double* A, int N) {int r = A[N];for(int i=n-1; i>=0; --i) {r = r*x+A[i];}return r;}时间复杂度为O(n),需要进行n次乘法与加法。

2011 google笔试题 完整版

2011 google笔试题 完整版

(1) 以下哪个字符串不能被正则表达式a(bc)*d*匹配到?A.adB.abcdC. a bcD.abccd(2) 在x86 cpu中,下面哪种运算速度最慢?A. 加B. 减C. 乘D. 除(3) 下面程序输出的结果是什么?void main(){bool first=true;int sum =0;int current_value;for(unsigned short i=65535;i>=0;--i ){if(first){current_value=65535;sum+=current_value%3;first=false;}else{sum+=-current_value%3;if(current_value<=0){printf("%d,%d",sum,i);break;}}}} A.65535, 0 B.65536, 1 C.65536, 65535 D.65536, 0(4) 书架上有编号为1-19的19本书,从中拿5本,问5本编号都不相邻的拿法有多少种?A.2002B.3003C.11628D. 比C大的一个数,具体多少我忘记了。

(5) 现在有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。

如果他想买这套房子,不贷款,不涨工资,没有其他收入,那么他需要几年才能攒够钱买这套房子?A.5年B.7年C.8年D.9年E. 永远买不起(6) 一棵满二叉树,一共有n个叶子节点,请问该二叉树一共有多少个节点?A.2n-1B.2nC.n-1D.n(7) 下列哪种排序方法在最坏情况下的时间复杂度是nlgn?A. 归并排序B. 快速排序C. 冒泡排序D. 插入排序(8) 有两个从小到大排好序的数组,长度分别是N和M,将这两个数组合并成一个有序数组的最小比较次数是:?A min(N,M)C N+MD max(M,N)(9) 关于TLB和Cache的说法中,哪个是错的?A. TLB与Cache中保存的数据是不同的B. TLB miss后,有可能直接在Cache中找到页表内容C. TLB miss后会导致程序出错,但是Cache miss不会D TLB和Cache的命中率都与程序的访存模式有关(10) 关于数据库的说法,哪个是错误的?A. 每个表都必须有主键B. 跨表查询可能非常慢C. 数据库不支持多个用户对同一个表进行写操作D. 多维索引可以用KD树实现二、编程算法题(1) 编程实现多项式求值:f(n)=a0+ a1*x^1 + a2*x^2 +…+ an*x^n,函数声明如下:double foo(double x, double *A, int N)。

谷歌笔试题

谷歌笔试题

谷歌笔试题附答案以及思路谷歌笔试题:判断一个自然数是否是某个数的平方。

当然不能使用开方运算。

假设待判断的数字是N。

方法1:遍历从1到N的数字,求取平方并和N进行比较。

如果平方小于N,则继续遍历;如果等于N,则成功退出;如果大于N,则失败退出。

复杂度为O(n^0.5)。

方法2:使用二分查找法,对1到N之间的数字进行判断。

复杂度为O(log n)。

方法3:由于(n+1)^2=n^2 + 2n + 1,= …= 1 + (2*1 + 1) + (2*2 + 1) + … + (2*n + 1)注意到这些项构成了等差数列(每项之间相差2)。

所以我们可以比较N-1,N – 1 – 3,N – 1 – 3 –5 … 和0的关系。

如果大于0,则继续减;如果等于0,则成功退出;如果小于0,则失败退出。

复杂度为O(n^0.5)。

不过方法3中利用加减法替换掉了方法1中的乘法,所以速度会更快些。

谷歌笔试题:如何随机选取1000个关键字给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。

如何才能从这个无穷尽的流中随机的选取1000个关键字?定义长度为1000的数组。

对于数据流中的前1000个关键字,显然都要放到数组中。

对于数据流中的的第n(n>1000)个关键字,我们知道这个关键字被随机选中的概率为1000/n。

所以我们以1000/n 的概率用这个关键字去替换数组中的随机一个。

这样就可以保证所有关键字都以1000/n的概率被选中。

对于后面的关键字都进行这样的处理,这样我们就可以保证数组中总是保存着1000个随机关键字。

谷歌笔试题:将下列表达式按照复杂度排序将下列表达式按照复杂度排序2^nn^Googol (其中Googol = 10^100)n!n^n按照复杂度从低到高为n^Googol2^nn!n^n谷歌笔试题:在半径为1的圆中随机选取一点假设圆心所在位置为坐标元点(0, 0)。

google应聘笔试题目.doc

google应聘笔试题目.doc

google应聘笔试题目i.单项选择题1.下面一段代码的输出是口voidfn(int^b) {(*b)++;intmainO {inta=7:fn(a);cout}2.定义inti,j,*p=i;那么下面哪条语句可以完成i=j 的赋值[]=*p:B. *p=*j:=j:=水木p;3.用二叉搜索树和哈希表存储相同的数据集,对于以下何种操作,二叉搜索树比哈希表速度更快?[]A.检索B.插入C.删除D.更新E .排序4.包含N个几点和M条边的有向带权图G,边的权为正,以下操作中不可以在0(N+M)的时间复杂度内完成的操作是:[]A.求结点s到结点t之间的最短距离B.求距离结点s最近的结点C.已知起始结点,对图G中的结点进行拓扑排序D.求图G的最大强连通子图5.有如下递归函数f (n ),其时间复杂度为[] intf(intn) {if(n==0)re t urnO;if (n==l)retur nl;retu rn (5*f (n-1 ) -6*f (n -2));(n)B.O(rf2)C.O (rf 3)D. 0(2"n)6.下面所述步骤中,哪一个不是创建经常所必需有的[]A .由调度程序为进程分配CPUB.建立一个进程控制块 C.为进程分配内存D.将进程控制块链入就绪队列7.在多进程的系统中,为了保证公区变量的完整性,各进程应互斥进入临界区。

所谓临界区是[]A .一个缓冲区B.—个数据区C. 一个同步机构D .—段程序8.能产生满足如下条件语言的正则表达式是:1.每一个a 后至少紧跟两个c;2 .每一个b后至少紧跟一个c[]A. (ac c | be | c) *B. (acc | be ) *C. (ac | be ) *D.不是正则语9.以下哪项不是RPC (远程过程调用)的特点口A .速度快B.降低系统耦合度C.可以实现异构系统间的协作1 0.有三个桶,容量分别是3升,5升,7升,你只能进行下面的操作:把一个桶中所有的水倒掉;把一个桶A中的水倒入桶B,直到桶A空了或者桶B 满了;假设一开始容量为3升和5升的桶是满的,7升的桶是空的,希望通过一系列操作使3个桶中任意一个中正好有4升水,那么至少需要[]次操作。

2011.12月Google Adwords试题GAP试题

2011.12月Google Adwords试题GAP试题

问题 1(判断题): MCC账户可以帮助客户进行关键字修改正确错误2(单选题): 客户在线销售大白兔糖及相关产品,但他并没有实际店面。

下列哪个关键字可以用作否定关键字?A.加工厂B.糖果C.奶糖D.大白兔问题 3(多选题): 我们可以通过客户报告,报告中心获得到什么?A.用电子邮件将报告发送给指定用户B.在下载的报告中修改关键字C.同时查看所选报告的数据和图形D.以电子表格形式下载报告问题 4(单选题): 当您搜索您的关键字“医院”时,您的广告未在 Google 上占据首位。

如何能让您的广告排在首位?A.广告是轮流展示的,以确保每个广告客户至少每天在首位展示一次B.最靠前的几个排名仅供特选的一组广告客户使用。

您需要联系 AdWords 专家,咨询顶部排名的相关信息C.无法确保您广告的排名。

不过,优化关键字可能会有助于提高广告的排名D.您需要具有最高的每次点击费用 (CPC),才能在首位展示广告问题 5(单选题): 关键字的点击率 (CTR)是怎样计算的?A.每日产生的平均点击量B.点击量除以展示次数C.展示次数除以平均排名D.展示次数除以点击量问题 6(单选题): AdWords 广告可以展示在 搜索页或其他 Google 域搜索页(如 Google.fr)的哪些位置?A.在正常搜索结果的上面或左边B.在正常搜索结果中,或在其上面、右边、下面C.在正常搜索结果中,或在其上面、右边D.在正常搜索结果的上面或右边问题 7(判断题): Google将比较购物认定为无效点击,因此不会因为比较购物收取客户广告费。

正确错误问题 8(多选题): 下列关于 AdWords 帐户入门版本的描述正确的是:A.由入门版升级成标准版的 AdWords 帐户可以随时退回到入门版B.入门版 AdWords 帐户中只能创建一个广告系列,一个广告组C.入门版的 AdWords 帐户中,广告只能投放一个国家,广告投放的语言也只能选择一种D.入门版AdWords 帐户只能投放文字广告,而不能投放图片广告E.入门版AdWords 帐户中不设每日预算,而是设定每月预算F.入门版 AdWords 帐户使用时间超过15天后会自动升级成标准版 AdWords帐户问题 9(单选题): 某一个广告客户的广告关键字A,被搜索了150次,其中搜索用户看到了100次这个广告,且共被点击了5次。

Google公司预选笔试题.doc

Google公司预选笔试题.doc

Google公司预选笔试题大家有兴趣看看吧,5/10sjtu的考卷。

选择题3、8我蒙的,大牛给解答一下。

1.单项选择题1.下面一段代码的输出是口voidfn(int*b) {(*b)++;intmainO {inta=7;fn(a):cout2.定义inti, j,*p=i;那么下面哪条语句可以完成i=j 的赋值[]=*p:B.*p=*j;=j;3.用二叉搜索树和哈希表存储相同的数据集,对于以下何种操作,二叉搜索树比哈希表It :b r/>速度更快?[]A .检索B.插入C.删除D.更新E .排序4.包含N个几点和M条边的有向带权图G,边的权为正,以下操作中不可以在O(N+M)的时间复杂度内完成的操作是:口A.求结点s到结点t之间的最短距离B.求距离结点s最近的结点C.已知起始结点,对图G中的结点进行拓扑排序D.求图G的最大强连通子图5.有如下递归函数f (n),其时间复杂度为口in tf (i ntn) { if (n—0)re turnO;if (n==l)retu rnl;retur n (5*f (n-1) -6*f (n-2)):(n)B.O(rf2)C.O (if 3)D . 0(2 "n)6.下面所述步骤中,哪一个不是创建经常所必需有的口A.由调度程序为进程分配CPUB.建立一个进程控制块C .为进程分配内存D.将进程控制块链入就绪队列7.在多进程的系统中,为了保证公区变量的完整性,各进程应互斥进入临界区。

所谓临界区是[]A.—个缓冲区B.—个数据区C. 一个同步机构D.—段程8.能产生满足如下条件语言的正则表达式是:1.每一个a 后至少紧跟两个c ; 2.每一个b后至少紧跟一个c[]A. (acc | be | c )*B. (acc | b c )*C. (ac|b c)*D.不是正则语言9.以下哪项不是RPC (远程过程调用)的特点□A.速度快B.降低系统耦合度C.可以实现异构系统间的协作10.有三个桶,容量分别是3升,5升,7升,你只能进行下面的操作:把一个桶中所有的水倒掉;把一个桶A中的水倒入桶B,直到桶A空了或者桶B满了;假设一开始容量为3升和5升的桶是满的,7升的桶是空的,希望通过一系列操作使3个桶中任意一个中正好有4升水,那么至少需要□次操作。

Google中国笔试题目.doc

Google中国笔试题目.doc

Google中国笔试题目i. i关于IP协议那个正确AIP是TCP上层协议BIP协议是应用层协议C由于两个属于同一层协议,他们之间可以直接通信DIP协议不提供可靠的通信关于内存正确的是A内存的存取速度不能低于cpu速度,否则会造成数据丢失B程序只有在数据和代码等被调入内存后才能运行C采用虚拟内存技术后程序可以在硬盘上直接运行D某计算机的内存容量为16MB,那么他的地址总线为24位单链表中结点的结构为(dat a,link),若想删除结点P (不是头节点或者尾结点)的直接后继,则应执行下列哪个操作Ap=p -> 1 ink;p-> 1 ink=p-> 1 i nk->linkB p ->link->li nk=p->link;Cp=p-> 1 ink-> 1 inkDp-> 1 i nk=p->lin k->link 已知x>=yandy >=z为真,那么x>zory=z值为A真B假C无法确定Dx yz同为正数时为真某请求被随即分配到四台机器进行处理,分配到每台机器的概率A1 5 %B20%C30%D3 5%,处理请求的失败概率分别为5%,4%,3 %2%,现在请求失败,问由C造成的概率最接近A26%B28%C30 %D3 2%假设我们用d=(al,a2,一.a5)表示无向无环图G的5个顶点的度数,下面给出的哪组值是可能的A{3, 4, 4, 3,1}B{4,2,2, 1,1}C{3,3,3,2, 2}D{3, 4, 3, 2, 1}设栈S和队列Q的初始状态为空,元素el,e2,e3,e4, e5, e6 一次压入栈S,一个元素出栈后即进入队列Q, 若出队列的顺序为e2, e 4, e3, e6, e5,el则栈S的容量要求最小值为A2B3C 4D5在堆排序算法中我们用一个数组A来模拟二叉树T,如果该A[0]存放的是T的根节点,那么A[K] (K〉0)的父亲节点是A(K-1)/2BK/2C(K+1)/2D 都不对(v ia:)现有如下任务需要安排在若干机器上并行完成,每个任务都有开始时间和结束时间(开始和结束时间都包括在任务执行时间内)的要求任务名称开始时间结束时间al 7b89c25 d71 1 e36f79 gl 013则最少需要使用的机器数目为A1B 2C3D4在设计一个操作系统时,哪项不是必须考虑的A设备管理模块B文件系统模块C用户管理模块D进程管理模块正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a:3, b:5, N 二6 时,序列为3,5 , 6,9,10, 12 (1 )设1个函数voidgenera t e ( inta, in tb , intN, in t*Q )计算Q的前几项(2)设计测试数据来验证函数程序在各种输入下的正确性有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法c语言函数原型voi dproc (char* str)也可以采用你自己熟悉的语言己知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)1. 1关于IP协议那个正确AI P是TCP上层协议B IP协议是应用层协议C由于两个属于同一层协议,他们之间可以直接通信DIP协议不提供可靠的通信关于内存正确的是A内存的存取速度不能低于cp u速度,否则会造成数据丢失B程序只有在数据和代码等被调入内存后才能运行C采用虚拟内存技术后程序可以在硬盘上直接运行D某计算机的内存容量为16MB,那么他的地址总线为24位单链表中结点的结构为(d ata,link),若想删除结点P (不是头节点或者尾结点)的直接后继,则应执行下列哪个操作Ap二P-〉1 i nk;p->lin k=p-〉link_〉li nkBp->l ink- 〉link 二p-〉li nk;Cp =p-〉li nk-〉linkDp-〉li nk=p->li nk - >link 已知x〉=yandy〉=z为真,那么x〉zor y=z值为A真B假C 无法确定Dxyz同为正数时为真某请求被随即分配到四台机器进行处理,分配到每台机器的概率A15 %B2O°/oC3O %D 35%,处理请求的失败概率分别为5%,4%,3%2%,现在请求失败,问由C造成的概率最接近A26%B28 %C3O°/oD32°/o假设我们用d=(al,a 2, a5 )表示无向无环图G的5 个顶点的度数,下面给出的哪组值是可能的A{3,4, 4 ,3, 1}B{4,2 ,2, 1, 1}C{3,3,3,2, 2}D{3,4,3,2, 1}设栈S和队列Q的初始状态为空,元素el,e2,e3, e4, e5, e 6—次压入栈S,一个元素出栈后即进入队列Q, 若出队列的顺序为e2, e4,e3, e6, e5,el则栈S的容量要求最小值为A2B3C4D 5在堆排序算法中我们用一个数组A来模拟二叉树T,如果该A[0]存放的是T的根节点,那么A[K] (K〉0)的父亲节点是A(K-l) /2BK/2C (K +1)/2D 都不对(via:)现有如下任务需要安排在若干机器上并行完成,每个任务都有开始时间和结束时间(开始和结束时间都包括在任务执行时间内)的要求任务名称开始时间结束时间al7 b89c25d7 1 1e36 f79gio 13则最少需要使用的机器数目为A1B2 C3D4在设计一个操作系统时,哪项不是必须考虑的A设备管理模块B文件系统模块C用户管理模块D进程管理模块正整数序列Q中的每个元素都至少能被正整数a和b 中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5, N:6 时,序列为3,5,6,9,10, 12 (1)设id 个函数voidgene r ate ( inta, i ntb, intN, in t氺Q)计算Q的前几项(2)设计测试数据来验证函数程序在各种输入下的正确性有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法C语言函数原型voidproc (ch ar^str)也可以采用你自己熟悉的语言己知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(1) 以下哪个字符串不能被正则表达式a(bc)*d*匹配到?
A.ad
B.abcd
C. a bc
D.abccd
(2) 在x86 cpu中,下面哪种运算速度最慢?
A. 加
B. 减
C. 乘
D. 除
(3) 下面程序输出的结果是什么?
void main()
{
bool first=true;
int sum =0;
int current_value;
for(unsigned short i=65535;i>=0;--i )
{
if(first)
{
current_value=65535;
sum+=current_value%3;
first=false;
}
else
{
sum+=-current_value%3;
if(current_value<=0)
{
printf("%d,%d",sum,i);
break;
}
}
}
} A.65535, 0 B.65536, 1 C.65536, 65535 D.65536, 0
(4) 书架上有编号为1-19的19本书,从中拿5本,问5本编号都不相邻的拿法有多少种?
A.2002
B.3003
C.11628
D. 比C大的一个数,具体多少我忘记了。

(5) 现在有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。

如果他想买这套房子,不贷款,不涨工资,没有其他收入,那么他需要几年才能攒够钱买这套房子?
A.5年
B.7年
C.8年
D.9年
E. 永远买不起
(6) 一棵满二叉树,一共有n个叶子节点,请问该二叉树一共有多少个节点?
A.2n-1
B.2n
C.n-1
D.n
(7) 下列哪种排序方法在最坏情况下的时间复杂度是nlgn?
A. 归并排序
B. 快速排序
C. 冒泡排序
D. 插入排序
(8) 有两个从小到大排好序的数组,长度分别是N和M,将这两个数组合并成一个有序数组的最小比较次数是:?
A min(N,M)
C N+M
D max(M,N)
(9) 关于TLB和Cache的说法中,哪个是错的?
A. TLB与Cache中保存的数据是不同的
B. TLB miss后,有可能直接在Cache中找到页表内容
C. TLB miss后会导致程序出错,但是Cache miss不会
D TLB和Cache的命中率都与程序的访存模式有关
(10) 关于数据库的说法,哪个是错误的?
A. 每个表都必须有主键
B. 跨表查询可能非常慢
C. 数据库不支持多个用户对同一个表进行写操作
D. 多维索引可以用KD树实现
二、编程算法题
(1) 编程实现多项式求值:
f(n)=a0+ a1*x^1 + a2*x^2 +…+ an*x^n,
函数声明如下:double foo(double x, double *A, int N)。

(2) 现在有n=2^k支足球队,编号为0,1,…,n-1,给出2维数组winner[][],winner[i][j]表示当编号i和j的会胜出的队伍的编号,并且没有平局,输入保证
winner[i][j]==winner[j][i],现在给出一个单败淘汰赛的签位一维数组order[],order[i]表示第i个签位上的队伍的编号,order保证是0到n-1的一个排列。

返回比赛最后的排名顺序,同一轮被淘汰的队伍名词并列,并列的队伍之间的顺序任意,要求时间和空间复杂度尽量的低,将结果写到一维数组result[]里面即可。

接口定义:
c++:
void calculate_result(int n,vector<vector<int>> winner,vector<int>
order,vector<int> result);
例子:
N=4,winner={{0,1,2,3},{1,1,2,1},{2,2,2,3},{3,1,3,3}},order={0,1,2,3}

(3) KOF 游戏相关,玩过KOF(拳皇)的人都知道,玩的时候如果按照一定的按键次序就会连招,连招的威力很大。

现在题目的意思是:每招用一个大写字母表示,如ABC … Z ,现给定n个连招公式:S→T,每个公式的S长度都相同,都为m,T 的长度为1 。

每个公式都代表一个连招规则,表示如果之前的m招为S,那么可以在后面连出一招T,在
前m招的时候可以随便连,但m+1招后就必须遵循连招公式。

现在要写一个算法,计算最长连招的长度;如果可以无限连招,则返回def 。

(1≤n, m≤100)
这里有一个例子:n=4, m=3,连招公式为:ABC→D,ABC→C,CCA→A,BCC→A。

连招公式的意思是:A、B、C可以连出C,也可连出D,C、C、A可以连出A,B、C、A、可以连出B。

这时候可以得到最长连招公式:ABC→C→A→A,即最长连招公式长度为6。

题目要求给出算法思想并结合一定的伪码,不需要实现。

相关文档
最新文档