当前位置: 首页 > news >正文

[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4

Sparks of Artificial General Intelligence: Early experiments with GPT-4

2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI)元年,作为见证历史的人类现在可以来简单读读这篇论文。
因为个人研究方向主要是软件相关,所以本blog主要且简要关注GPT-4的代码能力评估结果,其他方面和细节参考官方paper
arxiv link:Sparks of Artificial General Intelligence: Early experiments with GPT-4

Coding

在本节中,论文展示了GPT-4能够实现非常高的水平的代码能力,无论是从指令编写代码还是理解现有代码。GPT-4可以处理广泛的代码任务,从编码挑战到现实世界的应用,从低级汇编到高级框架,从简单的数据结构到复杂的程序,如游戏。GPT-4还可以推理代码执行,模拟指令的效果,并用自然语言解释结果。GPT-4甚至可以执行伪代码,这需要解释在任何编程语言中都无效的非正式和模糊的表达式。
在目前的状态下,作者相信GPT-4在编写只依赖于现有公共库的专注程序方面具有很高的熟练度,这与普通软件工程师的能力相比具有优势。更重要的是,它使工程师和非熟练用户都可以使用,因为它使编写、编辑和理解程序变得容易。作者还承认,GPT-4在编码方面还不完美,因为它有时会产生语法无效或语义不正确的代码,特别是对于更长或更复杂的程序。GPT-4有时也无法理解或遵循说明,或者生成的代码与预期的功能或风格不匹配。在此基础上,本文还指出,GPT-4能够通过响应人类的反馈来改进其代码

解算法题

衡量编码能力的一种常见方法是提出需要实现特定功能或算法的编码挑战。首先在HumanEval [CTJ+21]上对GPT-4进行了基准测试,这是一个文档字符串到代码数据集,由164个编码问题组成,测试了编程逻辑和熟练程度的各个方面。如表1所示,GPT-4优于其他llm,包括text- davincian -003 (ChatGPT的基础模型)和其他专门在code、code- davincian -002和CODEGEN-16B上训练的模型

在这里插入图片描述

这里的Zero-shot是指未经过针对该任务调整的模型,pass@1是指写出来的代码一次通过测试的概率,可以看到GPT-4在HumanEval测试中可以实现一次AC的准确率高达82%,明显高于包括chatGPT在内的其他模型。尽管与之前的模型相比,GPT-4的准确性有了很大的飞跃,但这可能是因为GPT-4在预训练期间看到并记忆了部分(或全部)人类结果。为了考虑这种可能性,作者还在LeetCode (https://leetcode.com)上进行了评估。
作者在表2中展示了结果,将GPT-4与其他模型以及基于LeetCode竞赛结果的人类表现进行了比较(所有问题都失败的用户不包括在内,因此这是一个强大的人类样本)。结果报告了pass@1和pass@5精度,分别衡量模型在第一次或前五次尝试中是否产生了正确的解决方案。GPT-4的表现明显优于其他模型,与人类的表现相当

在这里插入图片描述

可以看到人类刷leetcode的所有难度题目的平均通过率大概在38%左右,而GPT-4的pass@1就已经达到人类水平,pass@5已经大幅度超越了人类程序员水平可以到53%,先不论实际的项目开发工作,至少在算法解题方面GPT4已经超越人类均值。

这是论文中给出的一个让GPT4解算法题的prompt实例
在这里插入图片描述
这是GPT4给出的代码
在这里插入图片描述
这里GPT4使用动态规划算法解决LeetCode的问题。由于带有详细的注释,GPT-4的解决方案甚至还具有很好的可读性。

数据可视化

编码挑战可以评估算法和数据结构的技能。然而,它们往往无法捕捉到现实世界编码任务的全部复杂性和多样性,这需要专业的领域知识、创造力、多个组件和库的集成,以及更改现有代码的能力。为了评估GPT-4在更真实环境下的编码能力,作者设计了与数据可视化、LATEX编码、前端开发和深度学习相关的端到端的现实世界编码挑战,每一个都需要不同的专业技能。

在图3-2中,作者让GPT-4和ChatGPT从LATEX代码中提取数据,并根据与用户的对话用Python绘制图形。之后要求两个模型对生成的图执行各种操作。虽然两个模型都正确地提取了数据(这不是一个简单的任务,因为必须从多列中做推断),但ChatGPT永远不会生成所需的图形。相比之下,GPT-4适当地响应所有用户请求,将数据转换为正确的格式并调整可视化。
在这里插入图片描述

游戏开发

在图3.3中,作者让GPT-4用HTML和JavaScript编写一个3D游戏,使用非常高级的规范。GPT-4以零样本的方式生成满足所有要求的可工作游戏。在3D游戏中,GPT-4甚至能够解释“防御者化身试图阻挡敌人”的含义。相比之下,ChatGPT的回答是“我是一个AI语言模型,我可以为你提供如何使用JavaScript在HTML中创建3D游戏的指导,但我不会编写代码或自己创建游戏。使用JavaScript在HTML中创建3D游戏需要大量的编程知识和经验。这不是一项可以快速或轻松完成的任务。开发所有必要的功能,如3D图形、物理、用户输入和AI,将需要大量的时间和精力。

在这里插入图片描述
在这里插入图片描述

可以看到制作“简单”游戏对于GPT-4来说已经可以实现,只需要将游戏设置规则和设计要求逐条prompt给GPT4,它就能帮你完成代码编写的工作,而且可以实际运行起来(有无bug先不谈,至少能玩)。

深度学习

编写深度学习的代码需要数学、统计学的知识,并熟悉框架和库,如PyTorch, TensorFlow, Keras等。在图3-4中,作者让GPT-4和ChatGPT编写一个自定义优化器模块,即使对人类深度学习专家来说,这也是一项具有挑战性且容易出错的任务。给出了这些模型的自然语言描述,包括一系列非平凡的操作,如应用SVD、在top-k和top-2k特征值处对矩阵进行谱截断、用top-2k截断矩阵的f范数对top-k截断矩阵进行归一化、应用动量和权重衰减。这些说明没有完全详细地说明,例如,“在Gk上应用动量”需要“深度学习常识”。需要注意的是,这个特定的优化器在文献或互联网上并不存在,因此模型无法记住它,必须正确地组合概念才能生成代码。

在这里插入图片描述
GPT4和chatGPT都可以生成语法有效的深度学习代码,不过chatGPT存在bug,GPT4基本能完成目标代码生成,不过漏了维度遍历和正则化的操作。

Latex生成

对计算机科学家和数学家来说,LATEX书写是一项重要的练习,但它的学习曲线并不平坦。即使是专家也会犯恼人的错误,由于严格的语法和缺乏良好的调试器,这些错误每天需要花费数小时来修复。GPT-4可以利用其大师级的LATEX编码技能来大大简化过程,有潜力作为新一代的LATEX编译器,可以处理不精确的自然语言描述。
在图3-5中,作者让GPT-4把一段混合了自然语言、半严格(有bug)的LATEX代码转换成精确的LATEX命令,它转换之后一次就能通过编译并执行。而chatGPT并不具备这样的能力,生成的latex代码是有bug的,无法通过编译。

在这里插入图片描述
以后写latex可以用自然语言来写了(大概),写好要求和简略的latex代码交给GPT4来做剩下的,效率会提高很多。

代码理解

前面的例子表明,GPT-4可以根据指令编写代码,即使指令是模糊的、不完整的或需要领域知识的。他们还表明,GPT-4可以响应后续请求,根据指令修改自己的代码。然而,编码的另一个重要方面是理解和推理他人编写的现有代码的能力,这些代码可能是复杂的、模糊的或缺乏文档。为了测试这一点,我们提出了各种问题,这些问题需要阅读、解释或执行用不同语言和范式编写的代码。
在图3-6的例子中,作者让GPT-4和ChatGPT预测并解释一个打印两个结构体大小的C程序的输出。GPT-4正确地解释了输出可能会根据编译器使用的对齐规则而变化,并给出了一个4字节对齐的可能输出示例。ChatGPT忽略了对齐问题,并给出了错误的输出,还错误地指出了成员的顺序不影响结构的大小。

在这里插入图片描述

代码模拟执行

理解现有代码的最终测试是要求模型直接执行它。在图3-7中,我们可以看到GPT-4能够执行非平凡的Python代码。它必须跟踪多个变量(包括一个嵌套循环和一个字典)并处理递归。它通过编写中间步骤和注释详细解释了执行过程。需要注意的是,GPT-4并不是在Python解释器上运行代码,而是模拟自然语言中的代码。这需要对代码有高度的理解和推理,以及清楚地传达结果的能力。
在这里插入图片描述
甚至可以在伪代码上进行模拟执行
在这里插入图片描述

Interaction with the world

智能的一个关键方面是交互性,作者将其定义为交流和响应来自其他智能体、工具和环境的反馈的能力。交互性对智能很重要,因为它使智能体能够获取和应用知识,解决问题,适应不断变化的情况,并实现超出其个人能力的目标。例如,人类与他人和环境进行交互,以协作、学习、教学、协商、创造等。交互性要求智能体理解复杂的想法,快速学习,并从经验中学习,因此它与我们对智能的定义密切相关。
在本节中,作者探索了交互的两个维度:工具使用和具身交互(embodied interaction)。工具使用涉及使用外部资源(如搜索引擎、计算器或其他api)来执行对于模型而言很难或不可能完成的任务。具身交互涉及使用自然语言作为文本界面与模拟或现实环境进行交互,并从其中接收反馈。

工具使用

尽管在前几节的各种任务中表现令人印象深刻,但GPT-4仍然存在各种语言模型的弱点。这些弱点包括(但不限于)缺乏当前的世界知识,符号操作(例如数学)困难,以及无法执行代码。然而,GPT-4能够使用外部工具(如搜索引擎或api)来克服这些(和其他)限制。例如,在图5-2中,展示了一个简单的提示符,让GPT-4访问搜索引擎和其他功能。在执行过程中,当调用这些函数中的一个时,我们暂停生成,调用适当的函数,将结果粘贴回提示符,然后继续生成。
在这里插入图片描述
GPT-4能够使用极少的指令和没有演示的工具,然后适当地使用输出。最后测试中可以看到GPT4搭配搜索引擎可以回答实时问题,搭配计算器可以用来做算术运算,搭配字符串API可以处理字符串请求。

逆向工程

逆向工程是软件安全性的一项基本测试,其目的是在以机器可读(即二进制)的CPU指令表示形式编写的可执行程序中搜索有用的信息。这是一项具有挑战性的任务,需要理解汇编语言的语法、语义和约定,以及处理器和操作系统的体系结构和行为。
作者展示了GPT-4能够独立运行shell。GPT-4会检查文件格式和元数据,使用“objdump”和“radare2”等工具反汇编代码,使用“gdb”和“ltrace”调试代码,并使用补丁、挂钩和反编译等技术对其进行反向工程。在此过程中,GPT-4从汇编代码中计算出密码与从简单数学公式导出的哈希值进行比较。然后,GPT-4编写一个python程序,尝试不同的数字组合,直到找到与哈希值匹配的数字组合,从而破解密码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面是GPT4在用linux的gdb调试一个密码软件,一步步根据调试信息设置断点查看堆栈内存信息,到完成爆破脚本编写,最后找到密码完成crack的过程。
作为一个有逆向工程经验的人,个人看法是GPT-4确实具有至少初步的逆向工程能力,对于一些简单的crack挑战是可以利用gdb调试逐步破解出来秘钥的,而人类想要做到这点需要一点时间的学习和训练,对于不大了解逆向工程的人,GPT-4确实可以作为逆向的助力,对于做逆向的人来说,未来大模型确实有可能帮助到逆向工程师缩短逆向时间和减少逆向的工作量

渗透测试

解决更复杂的任务需要GPT-4组合使用多种工具。我们现在分享一些例子,其中GPT-4能够依靠其理解手头任务的能力来做到这一点,确定所需的工具,以正确的顺序使用它们,并对它们的输出做出适当的响应。
比如渗透测试任务,作者告诉GPT-4,它可以在为数字取证和渗透测试而设计的Linux发行版上执行命令,并执行入侵本地网络上的计算机的任务。在没有任何信息的情况下,它能够制定并执行一个计划,扫描网络中的设备,识别目标主机,运行一个可执行文件,尝试使用普通密码,并获得对机器的root访问权限。虽然机器很容易被入侵,但可以发现到GPT-4精通Linux命令,能够运行适当的命令,解释它们的输出,并进行调整以解决其目标。

在这里插入图片描述

可以看到GPT4在实验中成功使用常见的渗透工具黑入了使用弱口令的目标服务器。当然对于实际的渗透测试任务而言,这样的工作过于简单,但是至少能证明大模型已经具备一点渗透能力。
从安全工作者的角度来看,大模型这种渗透工具的使用能力或许可以利好测试者,辅助人工做一些简单的渗透任务,真要面临复杂的攻防对抗场景,目前来看现在的大模型还未具备资格,但未来很有可能会出现人机对抗和机机对抗的场景,安全不再只是人与人之间的博弈,人人 / 人机 / 机机 对抗,会使得安全攻防博弈出现前所未有的多元化局面。

总结

可以看到GPT-4确实已经称得上是通用AI,并且可以创造和使用工具(人类也不过是会创造和使用工具的动物而已,从这方面看或许已经可以将AGI当做高级智能?),当然实际使用的局限性还是很大,不过GPT-4的出现已经证明了AGI的可行性,在算力高度发展的未来,性能更强,适用性更广泛的AGI落地也只是时间问题,人机结对工作的时代是必然的发展趋势。
总体来说,大模型的能力非常强大,并且理论上没有极限,按照算力和智能的相关性,只要算力足够多,智能就可以足够强。在可预见的未来,大模型研究只会被最强的资本垄断,个体研究者只能捡剩下的边角料,说今年是人类历史转折点也确实不为过。

只不过人类历史最后是通向Cyberpunk还是Communism,仍是不确定的,关键在于AGI掌握在谁的手里。

相关文章:

[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4

Sparks of Artificial General Intelligence: Early experiments with GPT-4 2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI&a…...

舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物

舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言 这不是学姐生日快到了,于是我学了一手使用Python来把学姐的照片生成为视频,到时候给她一个惊喜! 好了先不舔了,下面分享一下用pytho…...

从《移动互联网应用程序(App)收集使用个人信息自评估指南》看个人信息保护着力点

为指导应用运营者对自身收集、使用个人信息行为进行自查自纠,2019年3月,应用专项治理工作组发布了《应用违法违规收集使用行为自查自查指南》。个人信息”。随着对App违法收集、使用个人信息行为评价工作的开展和深入,《App违法违规收集、使用…...

电脑0x0000001A蓝屏错误怎么U盘重装系统教学

电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作&…...

Day939.如何小步安全地升级数据库框架 -系统重构实战

如何小步安全地升级数据库框架 Hi,我是阿昌,今天学习记录的是关于如何小步安全地升级数据库框架的内容。 当消息组件的数据存储都是采用 SQL 拼写的方式来操作,这样不便于后续的扩展及维护。除此之外,相比前面的其他重构&#x…...

2023 年十大 API 管理趋势

作者郑玩星,API7.ai 技术工程师。 阅读原文 什么是 API?什么是 API 管理? 近期,AIGC(AI Generated Content,生成式人工智能)在各行业的应用日趋普及。AIGC 服务提供商通过 API 向外部提供其内…...

计算机网络微课堂1-3节

目录 1. TCP/TP协议​编辑 2. 3.调制解调器 4.因特网的组成 5.电路交换 6.分组交换 重要常用 7.报文交换 8.总结电路交换 报文交换和分组交换 9. 1. TCP/TP协议 2. ISP 网络提供商 ISP的三层 国际 国家 和本地 3.调制解调器 什么是调制解调器,它存在的…...

[Eigen中文文档] Array类与元素操作

文档总目录 本文目录什么是Array类?Array类型访问Array中的值加法与减法Array乘法其他按元素操作的运算array和matrix表达式之间的转换英文原文(The Array class and coefficient-wise operations) 本页旨在提供有关如何使用Eigen的Array类的概述和说明。 什么是A…...

python学习,全球有哪些特别好的社区推荐呢?

Surfshark可以访问全球社区学习的surfshark工具使用方法教程:qptool.net/shark.html 以下是一些全球范围内比较受欢迎的 Python 学习社区: 中文社区:csdn.net 优势:本土国语社区,获得相关知识与经验便利。 Python官…...

LC-1042. 不邻接植花(四色问题(染色法))

1042. 不邻接植花 难度中等198 有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入…...

python实战应用讲解-【numpy科学计算】scikits-learn模块(附python示例代码)

目录 Numpy 安装scikits-learn 准备工作 具体步骤 Numpy 加载范例数据集 具体步骤...

大数据开发必备面试题Spark篇01

1、Hadoop 和 Spark 的相同点和不同点? Hadoop 底层使用 MapReduce 计算架构,只有 map 和 reduce 两种操作,表达能力比较欠缺,而且在 MR 过程中会重复的读写 hdfs,造成大量的磁盘 io 读写操作,所以适合高时…...

SpringBoot整合xxl-job详细教程

SrpingBoot整合xxl-job,实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。Xxl-Job有…...

【MySQL--04】数据类型

文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…...

git 将其它分支的文件检出到工作区

主要是使用如下命令&#xff1a; git checkout [-f|--ours|--theirs|-m|--conflict<style>] [<tree-ish>] [--] <pathspec>…​覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时&#xff0c;用 index 中的内容覆盖工作树…...

人工智能的最大危险是什么?

作者&#xff1a;GPT(AI智学习) 链接&#xff1a;https://www.zhihu.com/question/592107303/answer/2966857095 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 首先&#xff1a;人工智能为人类带来了很多益处&…...

rk3568点亮E-ink

rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成&#xff0c;微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…...

如何将Springboot项目通过IDEA打包成jar包,并且转换成可执行文件

首先在IDEA打开你的项目&#xff0c;需要确认项目可以正常运行&#xff0c;然后点击页面右侧的Maven,运行Lifecycle下的package, 此时在项目的target目录下就可以看到一个jar包 这个时候你可以在jar包所在目录下执行cmd窗口&#xff0c;运行 java -jar campus-market-0.0.1-S…...

总结:网卡

一、背景 经常听到eth0&#xff0c;bond0这些概念&#xff0c;好奇他们的区别&#xff0c;于是有了此篇文章记录下。 二、介绍 网卡&#xff1a;即网络接口板&#xff0c;又称网络适配器或NIC (网络接口控制器)&#xff0c;是一块被设计用来允许计算机在计算机网络上进行通讯…...

Java这么卷,还有前景吗?

“Java很卷”、“大家不要再卷Java了”&#xff0c;经常听到同学这样抱怨。但同时&#xff0c;Java的高薪也在吸引越来越多的同学。不少同学开始疑惑&#xff1a;既然Java这么卷&#xff0c;还值得我入行吗&#xff1f; 首先先给你吃一颗定心丸&#xff1a;现在选择Java依然有…...

后端简易定时任务框架选择(Python/Go)--gocron

文章目录前言实现后语前言 在使用Python的web框架中&#xff0c;包括flask/Django&#xff0c;其中大量用到celery&#xff1b;celery作为异步任务使用的多&#xff0c;同时也会用celery来跑些定时任务&#xff0c;比如每晚定时跑脚本、跑数据统计等闲时任务。但随着任务量的增…...

【GStreamer学习】之GStreamer基础教程

目标 没有什么比在屏幕上打印出“Hello World”更能获得对软件库的第一印象了&#xff01; 但是由于我们正在学习多媒体框架&#xff0c;所以我们将输出“Hello World&#xff01;”改为播放视频。 不要被下面的代码量吓到&#xff1a;只有 4 行是真正需要的&#xff0c; 其…...

各类Round-Robin总结,含Verilog实现

1. Fixed Priority Arbitrary 固定优先级就是指每个req的优先级是不变的,即优先级高的先被处理,优先级低的必须是在没有更高优先级的req的时候才会被处理。所以转化为数学模型就是找出req序列中第一个为1的位置,然后将其转换为onehot。 例如: req[3:0] = 4b1100 ==> g…...

《软件设计师-知识点》

1、指令流水线 &#xff08;一&#xff09;一条指令的执行过程可分为三个阶段&#xff1a;取指、分析、执行。 取指&#xff1a;根据PC&#xff08;程序计数器&#xff09;内容访问主存储器&#xff0c;取出一条指令送到IR&#xff08;指令寄存器&#xff09;中。 分析&…...

mysql 同义词_数据库中的同义词synonym

一、Oracle数据只有一个实例(简单理解就是Oracle 只能建立一个数据库&#xff0c;不像MySQL&#xff0c;它下面可以创建N个库)&#xff0c;那么Oracle是根据用户灵活去管理的&#xff1b;这点读起来、理解 起来也不那么难&#xff0c;但是除非自己亲自实现一把才理解深入点&…...

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…...

数据结构——排序(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月12日 内容&#xff1a;数据结构排序内容讲解 目录 前言&#xff1a; 1.快速排序中的递归&#xff1a; 2.小区间优化&#xff1a; 3.递归改非递归&#xff1a; 4.归并排序&#xff1a; 5.归并排序的非递归形式&…...

C++13:搜索二叉树

目录 搜索二叉树概念 模拟实现搜索二叉树 插入函数实现 插入函数实现&#xff08;递归&#xff09; 查找函数实现 删除函数实现 删除函数实现&#xff08;递归&#xff09; 中序遍历实现 拷贝构造函数实现 析构函数实现 赋值重载 我们在最开始学习二叉树的时候&#xff0c;…...

【从零开始学Skynet】基础篇(五):简易聊天室

在游戏中各玩家之间都可以进行聊天之类的交互&#xff0c;在这一篇中&#xff0c;我们就来实现一个简易的聊天室功能&#xff0c;这在上一篇代码的基础上很容易就能实现。1、功能需求 客户端发送一条消息&#xff0c;经由服务端转发&#xff0c;所有在线客户端都能收到&#xf…...

HDU - 2089 不要62(数位DP)

题目如下&#xff1a; 杭州人称那些傻乎乎粘嗒嗒的人为 626262&#xff08;音&#xff1a;laoer&#xff09;。 杭州交通管理局经常会扩充一些的士车牌照&#xff0c;新近出来一个好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的数字了&#xff0c;这样一来&#x…...