当前位置:首页 » 操作系统 » 算法题AI

算法题AI

发布时间: 2023-06-07 08:02:06

㈠ 可解释AI,如何打开算法的黑箱

随着以机器学习为代表的新一代人工智能技术不断朝着更加先进、复杂、自主的方向发展,我们的经济和 社会 发展都纷纷迎来了变革性的机遇。但与此同时,AI算法的透明度、可解释性问题也为公众信任、公共安全等诸多领域带来了前所未有的挑战。

1月11日 14日,“腾讯 科技 向善创新周”在线上举办。“透明可解释AI——打开黑箱的理念与实践”专题论坛即聚焦于此。论坛发布了《可解释AI发展报告2022》,随后由专家学者(见文末)共同参与了圆桌讨论。以下为整理文章:

可解释AI的概念共识

姚新:

大家在讨论AI算法的透明性和可解释性的时候,首先应该考虑三个W的问题——Who,What和Why的问题。

首先,到底是对谁讲透明和可解释?因为从科学研究来说,任何一个研究都必须透明,都必须可解释,否则这个论文是发不出来的。所以我猜过去讲透明性和可解释性,可能不是对科学家来说的可解释性或者透明性,因为对科学家的透明性和可解释性,不一定对大众透明和可解释。第二是解释什么?解释模型做出来的结果还是解释这个模型的工作原理。第三,解释总是有一个目的,目的是要追责还是理解这个模型的科学原理。

根据对这三个W不同的答案,会得出非常不一样的透明性和可解释性,相应的解决办法可能也完全不一样。不管怎样,考虑透明性和可解释性的时候,首先大家要有一个概念上的共识,使得我们知道我们是讲同样一件事情,而不是用了同样一个名词,大家在不同的抽象层次讲不同的问题。

吴保元:

可解释是可信AI的重要组成部分,是可信的前提条件之一,但是相比于鲁棒性、公平性等可信特性,我觉得可解释不是独立存在的概念。就是姚老师刚才提到的,我们到底在解释什么?其他的特性都是有自己明确的数学定义,比如鲁棒性、公平性等,但是可解释性是没有的,因为我们单独提到它的时候,背后默认的更可能是对模型准确度的可解释性。或许这也可以解释为什么当前的可解释研究思路这么多,但是好像没有一个明确的框架,我觉得最主要的原因是它的解释对象不一样,没有办法统一到一起。

基于这种理解,我个人有一点小的想法,不应该把它称为可解释性,把它称为可解释力或许更准确。可解释性,大家可能误认为它是一种独立存在的性质;可解释力是一种可解释的能力,就像我们说的理解力、领导力等等,它是一种手段,一种行为,一种操作存在,需要跟别的绑在一起。我觉得以后提到它的时候,应该准确地描述它是针对什么特性的可解释力,而不是笼统地说可解释性如何。

可解释AI的价值何在?

朱菁:

人们对于人工智能系统可解释性、透明性的要求,大致有四个层次:

第一个针对的是直接用户,用户需要了解人工智能产品、服务背后的原理是什么,这是建立可信任AI的重要基础。可解释AI,实际上支撑了可信任AI。

第二个层次,对于政策和监管部门,他们希望通过解释原理来了解人工智能产品的公平性、可问责性,归因的过程是我们进一步问责、追究责任的基础。所以,可解释AI也与负责任的AI、可问责的AI是联系在一起的。

第三个层次就是技术工程与科学层次,我们希望了解为什么某些算法能够成功,它成功背后的奥秘是什么,它的应用范围是什么,它能否在更大的范围内使用这样一些算法或者是一些技术。

第四个是公众理解AI,如果 社会 大众大多数关心的话,他也能够在这方面了解相应的技术、系统大体的工作原理方式是什么。

何凤翔:

在现在的AI系统中,其实很多算法背后运作机制是未知的,是不清楚的,这种未知带来了未知的、难以管理的风险,包括安全性、鲁棒性、隐私保护、公平性等等。

这些点关系到了 社会 运转中非常关键、人命关天的领域,比如医疗、自动驾驶。这会带来很大的应用方面的困难,以及 社会 对AI的不信任。因为当AI算法运作机制是未知的时候,它的风险机制、风险大小、风险尺度就是未知的,我们就难以去管理风险,进而去控制风险。

可解释AI的挑战何在?

姚新:

原来我一个学生跟我做了一点关于公平性的工作,跟其他的文献发现的点非常一致,就是说模型的准确性和公平性之间是相互矛盾的。性能最好的模型从公平性的角度来说,按指标来测量不见得最好,你要把模型做得都是最公平,用指标来衡量的话,它的性能就会受到损失。实际上可解释性非常类似现在有各版的可解释性指标,但是要真正考虑这些指标的话,模型的性能总是会掉下来,要考虑在实际过程中怎么来找一个折中的方案。

吴保元:

针对可解释性本身的不可行、不可取,这也是值得我们思考的问题。比如说我们在研究犯罪率或者说疾病的传播率、发病率等,如果我们就拿现成的统计数据,比如在不同种族、不同地域采集的数据,很有可能会得出来某些种族或者某些地域犯罪率很高,这是因为数据采集的时候就是这样的。这样一来,如果可解释给出的类似结论被公开,可能会造成种族或者地域歧视。但实际上数据背后是我们在采集的时候没有采集其他特性,比如说为什么这个地域的传播率很高呢?很有可能是政府投入不足,或者说其他的因素。

所以这也启发我们可解释性本身它的可信性是什么,它的准确性,它的公平性,它是否忽略了某些特征,或者夸大了某些特征,它的鲁棒性,是不是把样本变化一点,它的可解释性截然相反,这些需要我们进一步思考。

另外,我跟很多研究可解释的专家聊过,他们的困惑在于现在的可解释性方法是不可印证的,甚至是矛盾的,这就引出了可解释性方法本身的可信度的问题。

何凤翔:

在我看来,理解深度学习算法的运作机制,大致有理论和实践两条路径。在理论方面,当前的研究无法完全解释理论上泛化性较差的深度模型为何能在多领域取得如此的成功。这种理论与实践的矛盾,就像曾经物理学中的乌云一样,反映出来了人们对于机器学习理解的缺失,而这是现在在理论上提升算法可解释性的一个难点。

而在实验角度上,很多实验学科中的做法可以作为对于机器学习研究的启发,比如说物理学、化学,以及刚才提到的医疗。比如说药物研发流程中的合格检验,要做双盲实验;在物理学、化学的研究中,对控制变量实验有严格要求。类似的机制是否能在AI研究中严格执行呢?我觉得这可能是另外一条路径。在我看来,现有的很多对于AI算法的解释是启发式的,而在关键领域中我们需要的是证据,这需要在理论和实验两方面做很多工作。

可解释AI如何实现?

朱菁:

前面很多专家都指出对于解释有不同的目标,不同的对象,不同的要求,所以实际上关于人工智能的可解释性问题可能是属于多元性的,就是要允许有多种不同层次不同方式的解释在这里面起作用,针对不同的领域、不同的对象,使用不同解释的方式。

当可解释性有它的局限或者和其他的目标、要求,需要做出权衡取舍的时候,我们想也可以从多个层面来进行替代性的,或者说是补偿性、补充性的策略。比方说针对监管部门,它对于可解释性的要求,和面向公众或者专家层面的,会有所不同,所以这个可以通过若干个层次,比如说监管部门的,行业的,市场的,以及传播普及层面的,对于安全性、鲁棒性要求更高一些,或者在专家层面上有更好的沟通理解,而对于 社会 公众而言,这里面就需要有一些转换,同时有需要一些权威部门,有公信力的部门,向 社会 做一些说明和认定。

姚新:

深度神经网络可以解决特别复杂的问题,我觉得现在大家用深度网络有一个原因,即所针对的问题本身可能就比较复杂。这是一个假设。假如这个假设是对的话,那么相应的可解释性不会特别好理解。因为需要对付这些复杂性,相应的模型就必然是要复杂。

所以我总觉得透明性、可解释性和性能之间是有一个固有的矛盾,如果现在把从技术上讨论的方向,是怎么找一个折中方案,根据不同的场景、可解释的目的,找不同折中方案,这样导致有可能会出来一些比较具体的技术,或者可以促进这些技术往落地的方向走。

吴保元:

我们尝试过一些从技术上可行的方案去量化各种可信特性,但是,要实现统一量化很困难,比如说公平性和鲁棒性都有不同的量化准则和指标。当把不同的特性简单组合到一起的时候很难优化,因为它们的准则是高度不对齐的,差异非常大,这就涉及怎么去对齐这些特性坐标。我认为想要找到一个全局坐标系是非常困难的。我们可以从局部出发,针对某种场景,比如医疗场景,首先把隐私性当做前提,在金融或者自动驾驶,我们把鲁棒性当做前提,然后再去研究其他特性,或许一步一步能够找到这种坐标系。

可解释AI的技术现状?

郑冶枫:

总体来说,因为我们现在还缺乏非常好的理论框架,所以可能针对问题,我们创造性地想一些算法,试图提高本身这个系统的可解释性,给大家举两个例子来说明一下我们天衍实验室在这方面的 探索 。

深度学习可能有千亿、万亿的参数,这对于医生来说太复杂了,他很难理解这个算法的底层原理,算法本身可能缺乏一个全局的可解释性。但是深度学习框架准确率非常高,所以我们不可能不用。而可解释性非常好的模型就是回归模型,这类模型主要的问题就是准确率太低。所以我们做了一个 探索 ,我们希望把这两个模型结合起来,它具有非常高的准确率,还有一定的可解释性,不是完全可解释性。

我们把这个混合模型用于疾病风险预测,就是根据病人历次的就诊记录,我们预测病人在未来6个月之内得某个重大疾病的概率,比如他得卒中的概率。病人每一次的就诊记录包含大量信息,这里面我们需要提取一些跟预测目标相关的重要信息,我们知道生物学习网络最擅长的就是自动特征学习。所以我们利用深度学习网络把一次就诊记录压缩成一个特征的向量,接着我们利用回归模型,把病人多次就诊记录综合起来预测未来6个月之内这个病人得脑卒中的风险。

杨强:

我们在审视各个算法和它对应的可解释性的关联问题上,发现一个有趣的现象,比方说在机器学习里面,深度学习就是属于效率非常高的,但是它却对应的可解释性很差。同样,线性模型没有那么高,但是它的可解释性相对强一些,树状模型也是,因果模型更是这样。所以往往我们确实得做一个取舍,就是我们在可解释这个维度和高效率这个维度,在这个空间里面选择哪一个点,现在并没有在两个维度都高的这样一个算法。

可解释AI的行业实践

郑冶枫:

各行业对可解释性和透明性的要求不同,我结合医疗AI这个场景给大家分享一下我的体会和理解。大家知道医疗在全世界范围内都是被强监管的领域,一款医疗产品要上市必须拿到医疗器械注册证,辅助诊断算法AI产品属于三类医疗医疗,也就是监管最严格的级别,所以我们要披露的信息很多,大致包括数据集和临床算法验证两方面。前者主要强调数据集的公平多样性和广泛覆盖性,后者则重视披露我们的算法真正在临床试验中、真正临床应用的时候它的性能。

此外,我们的测试样本也需要有很好的多样性,覆盖不同医院,不同区域,不同病人群体、厂商、扫描参数等等。临床实验更加严格,首先我们要固化算法的代码,在临床试验期间是不能改代码的,因为你不能一边做实验一边改代码,这就失去了临床试验的意义。

所以医疗AI的监管是非常强的,药监局需要我们披露很多信息,提高医疗AI产品的透明性,它有非常严格甚至苛刻的书面要求。因为我们知道智能学习网络天然不具有很好的解释性,虽然你可以做一些中间增强,可以一定程度上改善这些事情,监管也可以理解这个解释性差一点,正因为解释性差,要求的透明性就越高。

何凤翔:

我觉得提供AI系统的说明书有两个路径:第一个路径从生成AI系统的过程出发。这一点现在有一些实践,比如开源代码,说明使用了什么数据,数据是如何使用的、如何预处理的。这会提升人们对AI的信任和理解,这也像刚才郑老师提到,申请医疗相关的资质的时候,我们需要把生产细节汇报给相关机构。

第二种方式就是从生成的AI系统所做出的预测以及决策的指标来入手做算法的说明书。比方对AI系统做一些测评。对于刚才我们提到的指标,包括可解释性、鲁棒性、准确性、隐私保护、公平性,找到一些比较好的量化指标、找到一些评测算法,把这些指标作为AI系统的使用说明书。

可解释AI的未来发展

杨强:我期待在未来人工智能的治理,在人工智能,人和机器这种和谐共存,共同解决我们要解决问题的前提下,会越来越成熟。我是非常看好这个领域的。

朱菁:我期待这个领域进一步的探讨,不同领域的学者都能够参与进来。比如说像我自己做的主要是哲学, 科技 哲学。在 科技 哲学,实际上对于解释有将近一百年的积累和 探索 ,这里面应该有很多可以发掘借鉴的资源,参与到目前这样一个很有意思很有挑战性的话题里面。

何凤翔:AI本身是一个跨学科领域,它可能会用到很多数学、统计、物理、计算机等各个知识的领域,今天提到的很多点,包括隐私保护、公平性,很多也是来源于人文学科、法律、 社会 学这些方面。所以这就意味着研究可信AI以及可解释性等等方面会需要各个学科领域的人合作起来一起去做的一件事情,会非常需要大家的通力合作,共同推进这个领域的发展。

姚新:对于做研究来说,我希望将来可以有一点聚焦的讨论。我刚才讲的3W,到底我们要解决透明性、可解释性的哪一部分,对谁而言。假如对医疗而言,是对法规的制定者来说还是对医生来说,还是对病人来说,还是对这个系统的开发者来说?我觉得在这里面有非常多可以发挥自己的想象力和能力的地方。

郑冶枫:对算法人员来说,当然我们希望将来科学家们找到非常好的,具有良好可解释性,同时准确性非常高的算法,真正做到鱼和熊掌兼得。

㈡ 雷鸟科技的AI算法到底是什么

雷鸟科技的AI算法是一种智能推荐算法,用专业术语来表达,就是它可以充分利用用户画像、视频画像,结合智能算法,为每个用户推荐个性化的内容。

㈢ 求五子棋AI算法,空棋位打分那个value函数,打分规则不用说了额,主要是怎么判断活4,冲4,活3等棋局形式

正常一点的想法:

  1. 判断自己有没有马上赢的点;

  2. 判断对方马上赢的点;

  3. 判断己方活三;

  4. 判断敌方活三;

  5. 判断己方潜在(双活三、双活四、三叉四、……);

  6. 判断对方潜在(……)。

  7. 判断己方潜在活三;

  8. 判断敌方潜在活三;

  9. 任意落子。

疯狂的:

深搜或宽搜,找出赢的几率最大的点。

㈣ 什么是AI算法

ai
人工智能
用程序实现搜寻答案的计算方法
比如说一棵二叉树上的某一点的数据是你要的
你就要写一个程序让它找到这个数据
而这个程序怎么找
就要看算法了~
常见的算法大概有什么a*算法之类的

㈤ 求问五子棋AI算法思路

五子棋的核心算法

五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。

一、相关的数据结构
关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。
CList StepList;
其中Step结构的表示为:

struct Step
{
int m; //m,n表示两个坐标值
int n;
char side; //side表示下子方
};
以数组形式保存当前盘面的情况,
目的是为了在显示当前盘面情况时使用:
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];

其中FIVE_MAX_LINE表示盘面最大的行数。

同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合:

CList CountList;
其中类CBoardSituiton为:
class CBoardSituation
{
CList StepList; //每一步的列表
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
struct Step machineStep; //机器所下的那一步
double value; //该种盘面状态所得到的分数
}

二、评分规则
对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,¦,/,\,//,\\

实际上需要考虑在这六个位置上某一方所形成的子的布局的情况,对于在还没有子的地方落子以后的当前局面的评分,主要是为了说明在这个地方下子的重要性程度,设定了一个简单的规则来表示当前棋面对机器方的分数。

基本的规则如下:

判断是否能成5, 如果是机器方的话给予100000分,如果是人方的话给予-100000 分;
判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分;
判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分;
判断是否成死3活3,如果是机器方的话给予1000分,如果是人方的话给予-1000 分;
判断是否能成死4,如果是机器方的话给予500分,如果是人方的话给予-500分;
判断是否能成单活3,如果是机器方的话给予200分,如果是人方的话给予-200分;
判断是否已成双活2,如果是机器方的话给予100分,如果是人方的话给予-100分;
判断是否能成死3,如果是机器方的话给予50分,如果是人方的话给予-50分;
判断是否能成双活2,如果是机器方的话给予10分,如果是人方的话给予-10分;
判断是否能成活2,如果是机器方的话给予5分,如果是人方的话给予-5分;
判断是否能成死2,如果是机器方的话给予3分,如果是人方的话给予-3分。

实际上对当前的局面按照上面的规则的顺序进行比较,如果满足某一条规则的话,就给该局面打分并保存,然后退出规则的匹配。注意这里的规则是根据一般的下棋规律的一个总结,在实际运行的时候,用户可以添加规则和对评分机制加以修正。

三、胜负判断
实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。具体见下面的图示:

四、搜索算法实现描述
注意下面的核心的算法中的变量currentBoardSituation,表示当前机器最新的盘面情况, CountList表示第一层子节点可以选择的较好的盘面的集合。核心的算法如下:
void MainDealFunction()
{
value=-MAXINT; //对初始根节点的value赋值
CalSeveralGoodPlace(currentBoardSituation,CountList);
//该函数是根据当前的盘面情况来比较得到比较好的可以考虑的几个盘面的情况,可以根据实际的得分情况选取分数比较高的几个盘面,也就是说在第一层节点选择的时候采用贪婪算法,直接找出相对分数比较高的几个形成第一层节点,目的是为了提高搜索速度和防止堆栈溢出。
pos=CountList.GetHeadPosition();
CBoardSituation* pBoard;
for(i=0;ivalue=Search(pBoard,min,value,0);
Value=Select(value,pBoard->value,max);
//取value和pBoard->value中大的赋给根节点
}
for(i=0;ivalue)
//找出那一个得到最高分的盘面
{
currentBoardSituation=pBoard;
PlayerMode=min; //当前下子方改为人
Break;
}
}

其中对于Search函数的表示如下:实际上核心的算法是一个剪枝过程,其中在这个搜索过程中相关的四个参数为:(1)当前棋局情况;(2)当前的下子方,可以是机器(max)或者是人(min);(3)父节点的值oldValue;(4)当前的搜索深度depth。

double Search(CBoardSituation&
board,int mode,double oldvalue,int depth)
{
CList m_DeepList;
if(deptholdvalue))== TRUE)
{
if(mode==max)
value=select(value,search(successor
Board,min,value,depth+1),max);
else
value=select(value,search(successor
Board,max,value,depth+1),min);
}
return value;
}
else
{
if ( goal(board)<>0)
//这里goal(board)<>0表示已经可以分出胜负
return goal(board);
else
return evlation(board);
}
}

注意这里的goal(board)函数是用来判断当前盘面是否可以分出胜负,而evlation(board)是对当前的盘面从机器的角度进行打分。

下面是Select函数的介绍,这个函数的主要目的是根据 PlayerMode情况,即是机器还是用户来返回节点的应有的值。

double Select(double a,double b,int mode)
{
if(a>b && mode==max)¦¦ (a< b && mode==min)
return a;
else
return b;
}

五、小结
在Windows操作系统下,用VC++实现了这个人机对战的五子棋程序。和国内许多只是采用规则或者只是采用简单递归而没有剪枝的那些程序相比,在智力上和时间有效性上都要好于这些程序。同时所讨论的方法和设计过程为用户设计其他的游戏(如象棋和围棋等)提供了一个参考。

㈥ 阿里面试官:恕我直言,搞懂这10道算法题,轻松拿20K不是问题

01打怪兽

难度:容易

现在有3只怪兽,他们的都有自己的血量a,b,c(1<=a,b,c<=100),当Tom打死第一怪兽的时候花费的代价为0,其余的怪兽的代价为当前的怪兽的血量减去上一个怪兽的血量的绝对值。问Tom打死这些怪兽所需要的最小代价

02数组变换

难度:中等

给出一个长度为 n 的数组,和一个正整数 d。 你每次可以选择其中任意一个元素 a[i] 将其变为 a[i] + d 或 a[i] - d,这算作一次操作。你需要将所有的元素全部变成相等元素,如果有解,请输出最小操作次数,如果无解请输出-1。

01超级区间

难度:中等

Tom现在有一个长度为n的数组,Jerry给Tom定义了一种超级区间,如果区间[l,r]满足(a[l]+…+a[r])>=k,则区间[l,r]被称为超级区间,现在Jerry想让Tom告诉他数组中有多少个超级区间。

02能量半径

难度:中等

codancer来到了一个能量平面上的中心,坐标为(0,0),接下来巫师Tom会在q个坐标上放置能量点,每个能量点的能量值为1,为了打败哥斯拉,他需要至少k点的能量,因此他想确定一个最小的整数半径r使得codancer能够从这个圆心为(0,0),半径为r的圆形区域内得到至少k个能量值,请你帮他确定最小的整数半径r。

01找出二叉搜索树的第2大的数

难度:容易

给定一个二叉搜索树,找出其第二大的数。

02字符配对

难度:中等

给你一个字符串,字符串中仅包含"A","B",现在有四种字符串"AA","AB","BA","BB",每种字符串都有他们的权值,问从给出的字符串中能够得到的最大权值为多少(一个字符只能属于一个子字符串)?

01斐波那契字符串

难度:中等

Tom发现了一种神奇的字符串-斐波那契字符串,定义f[1]=0,f[2]=1,对于所有的i>2都有f[i]=f[i-2]+f[i-1],其中“+”代表拼接,比如01+10=0110,现在对于字符串f[n],请判断f[n]的第k项是0,还是1?

01Hikari and Interstellar Experience

难度:容易

在无垠的宇宙中,有 n 个星球,第 i 个星球有权值vi 。由于星球之间距离极远,因此想在有限的时间内在星际间旅行,就必须要在星球间建立传送通道。 任意两个星球之间均可以建立传送通道,不过花费并不一样。 第 i 个星球与第 j 个星球的之间建立传送通道的花费是lowbit(vi ⊕ vj) ,其中⊕为二进制异或,而lowbit(x)为 x 二进制最低位的值,例如lowbit(5) = 1,lowbit(8) = 8 。 特殊地,lowbit(0) = 0。 Hikari 想在这 n 个星球间穿梭,于是――你需要告诉 Hikari,要使这 n 个星球相互可达,需要的花费最少是多少?

02二进制字符串

难度:中等

Tom得到了一个二进制字符串s,即s只由Ɔ'和Ƈ'组成,现在令d(t)代表二进制字符串t在十进制下的值。 那么d(“011”)=3,d(“0001000”)=4,如果t的长度等于d(t),那么就称t是奇妙串,现在Tom想知道s中有多少个子串是奇妙串?

01小明的数学作业

难度:容易

众所周知,小明是一个数学小能手,有一天数学老师给了小明一个长度为n(2<=n<=5000)的序列,其中第i个数是ai(0<=ai<=1e9),数学老师想知道这个序列排序后,其中最长的等差子序列的长度是多长,聪明的你能帮小明解决这个问题吗?

02Codancer上楼

codancer来到了一栋大楼前,现在他要上楼。

如果codancer从第x层走楼梯到第y层(y>x),那么他所花费的时间是a[x]+a[x+1]+…+a[y];

如果他从x层坐电梯到第y层,那么他所花费的时间是c+(b[x]+b[x+1]+…+b[y]),因为他等电梯的时间为c。

现在codancer想知道从第1层到第n层需要最少需要多长时间?

01变换的秘钥

难度:中等

Tom最开始有一个密钥s1,s1是长度为n的由小写字母组成的字符串。Jerry也有一个长度为n的由小写字母组成的密钥s2。现在有m组关系,每组关系由两个数字[u,v]构成(1<=u,v<=26),表示26个字母表中的第u个小写字母可以直接转换为第v个小写字母。假设u=1,v=2,那么说明字母'a'可以直接转换为字母'b'。现在Tom对于s1的每个字母使用无数次转换,请判断s1能否转换为s2?

01最大边权和

难度:简单

现在有n个点(1<=n<=1000),每个点都有一个值称为点权ai(ai为偶数,1<=ai<=1000),现在可以将任意两个点相连,连起来以后这条边也有一个值称为边权,这个边的边权为这两个点的点权之和的一半。现在需要你添加n-1条边,问将这n个点连通以后(连通是指任意两个点都能互相到达)的最大的边权和是多少?

02钱庄

难度:中等

钱庄每天能够收到很多散钱,第i个散钱的值2 wi。为了便于管理,钱庄每天都会向中央银行申请兑换钱币,假设钱庄有一些散钱使得2 k1+2 k2+...+2 km=2^x(x为非负整数),那么就可以将这些散钱兑换成一个大钱币,问在钱庄收到的这些散钱最终最少能变成几个钱币?

01codancer的旅行

难度:困难

期末考试终于结束啦,Codancer开始了他的旅行,现在整个地图上有n个城市,这些城市之间有n-1条道路相连,每条道路都有一个距离,并且保证整个图是连通的,即这个地图可以看作是一棵树,现在假设Codancer要从城市A到城市B,那么他的路费就是从A-B的路径上边权最大的边的权值wmaxx元。现在Codancer有k元,他想知道他能选择那些(A,B)并且A<B使得codancer能够到达?

HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。

01全奇数组

难度:中等

codancer现在有n个正整数a[1],a[2]…a[n],Tom告诉codancer他可以进行下列操作,选择某个偶数x,把这n个数中全部等于x的数字除2,Tom想知道把这n个数字全部变成奇数最少需要几次这样的操作?

以上十道算法题你都能搞定嘛?备战大厂每日刷一道算法题来提升自己,坚持坚持再坚持,必然会有收获。为大家整理一份781页的高分宝典,知识较为全面,可分享给想要学习提升自己的朋友。

领取方式:私信【面试宝典】或点击右方链接: https://shimo.im/docs/QVy8HrQgPYkx9Ddg/ 即可免费领取,喜欢本文不妨关注+转发支持一下~~

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:626
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:356
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:71
php微信接口教程 发布:2025-04-16 17:07:30 浏览:296
android实现阴影 发布:2025-04-16 16:50:08 浏览:787
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:337
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:202
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:798
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:355
土压缩的本质 发布:2025-04-16 16:13:21 浏览:582