”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > PHP 程序计算没有连续 1 的二进制字符串的数量

PHP 程序计算没有连续 1 的二进制字符串的数量

发布于2024-11-04
浏览:756

PHP Program to Count Number of Binary Strings without Consecutive 1’s

什么是不连续 1 的二进制字符串的 Count 个数?

让我们考虑一个例子来解释计算没有连续 1 的二进制字符串的概念。

例子

假设我们要统计长度为3且不包含连续1的二进制字符串的数量。二进制字符串是仅由 0 和 1 组成的字符串。

长度为 3 的可能二进制字符串为:000、001、010、011、100、101、110 和 111。

但是,我们只需要计算那些没有连续 1 的二进制字符串。因此,我们需要从计数中排除字符串 011、101 和 111。

我们来分析一下剩下的二进制字符串:

  • 000:这是一个有效的字符串,因为它没有连续的 1。

  • 001:这是一个有效的字符串,因为它没有连续的 1。

  • 010:这是一个有效的字符串,因为它没有连续的 1。

  • 100:这是一个有效的字符串,因为它没有连续的 1。

  • 110:这是一个无效字符串,因为它有连续的 1。

从上面的分析可以看出,长度为3的有效二进制串有4个,且没有连续的1。

PHP 程序计算没有连续 1 的二进制字符串的数量

方法1-使用动态规划

例子

输出

Number of binary strings without consecutive 1's: 13

代码说明

此 PHP 代码定义了一个名为 countBinaryStrings 的函数,该函数使用动态编程计算长度为 $n 且不包含连续 1 的二进制字符串的数量。它使用基本情况 $dp[0] = 1 和 $dp[1] = 2 初始化数组 $dp,表示字符串的计数长度分别为0和1。然后,它使用循环通过对长度 $i - 1 和 $i - 的计数求和来填充长度 2 到 $n 的剩余计数。 2. 最后,它返回长度 $n 的计数并打印它。在此特定示例中,代码计算长度为 5 且没有连续 1 的二进制字符串的数量并显示结果。

方法2

输出

Number of binary strings without consecutive 1's: 13

代码说明

此 PHP 代码计算长度为 $n 且不含两个连续 1 的不同二进制字符串的数量。它定义了两个数组,$a 和 $b,来存储计数。基本情况设置为 $a[0] = $b[0] = 1。然后,使用循环计算长度 1 到 $ 的计数n-1。长度 $i 的计数是通过将数组 $a 中的长度 $i-1 的计数与长度 $[ 的计数相加而获得的&&&]i-1 来自数组 $b。另外,数组 $b 中长度 $i 的计数是从数组 $ 中长度 $i-1 的计数获得的一个。最后,代码返回数组 $a 中长度 $n-1 的计数与数组 $n-1 长度的计数之和&&&]$b,表示不连续1的二进制串总数。在此特定示例中,代码计算长度为 5 的计数并显示结果。 结论

总之,第一种方法利用动态编程,用基本情况初始化数组并迭代计算较大长度的计数。它通过将前两个长度的计数相加来有效地计算结果。第二种方法采用更简单的方法,使用两个数组来存储计数,并根据先前长度的计数迭代更新它们。它直接计算总计数,无需分别对两个数组求和。这两种方法都可以对没有连续 1 的二进制字符串进行精确计数,并且它们之间的选择可能取决于具体要求和性能考虑。

版本声明 本文转载于:https://www.tutorialspoint.com/php-program-to-count-number-of-binary-strings-without-consecutive-1-rsquo-s如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-17
  • 开源软件项目的免费人工智能代码审查
    开源软件项目的免费人工智能代码审查
    如果您参与开源软件,您就会知道代码审查的重要性。它们不仅仅是捕捉错误,还确保代码质量、安全性和可维护性,帮助每个贡献者无缝协作。但让我们面对现实吧,代码审查非常耗时。手动审查每个拉取请求 (PR) 可能会减慢开发速度,尤其是在资源有限的开源项目中。 Bito 的人工智能代码审查代理——一种自动化工具...
    编程 发布于2024-11-17
  • 是否可以在 PHP 重定向中设置自定义标头?
    是否可以在 PHP 重定向中设置自定义标头?
    PHP 重定向中的自定义标头:不可能的请求使用 PHP 重定向到页面时,您可能会在尝试通过时遇到挑战以及带有重定向的自定义 HTTP 标头。重定向的标准方法涉及使用 header("Location: http://...") 语法。然而,这种方法只为触发重定向的响应设置标头,而...
    编程 发布于2024-11-17
  • 如何用CSS消除图像间距?
    如何用CSS消除图像间距?
    通过 CSS 消除图像间距在 HTML 中,当连续放置多个图像时,它们之间会出现一个空格。在某些设计场景中,这可能会造成视觉破坏。虽然存在许多解决方法,例如手动换行或 HTML 注释,但有一个使用 CSS 的优雅解决方案。要有效删除图像之间的空白,请利用以下 CSS 属性:img { displ...
    编程 发布于2024-11-17
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-17
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-17
  • 如何在 Keras 中实现自己的损失函数?
    如何在 Keras 中实现自己的损失函数?
    Keras 中的自定义损失函数实现在 Keras 中,可以实现自定义损失函数来满足特定的训练要求。其中一个函数是骰子误差系数,它测量真实标签和预测标签之间的重叠。要在 Keras 中创建自定义损失函数,请按照以下步骤操作:1。实现系数函数骰子误差系数可以写为:dice coefficient = (...
    编程 发布于2024-11-17
  • Go如何在没有传统机制的情况下实现多态?
    Go如何在没有传统机制的情况下实现多态?
    探索Go语言中的多态性在面向对象编程中,多态性允许对象根据其类表现出不同的行为。但在Go中,多态性的概念并不是传统意义上的实现。让我们深入探究一下这背后的原因,探讨如何在 Go 中实现类似的功能。为什么 Go 缺乏传统的多态性Go 不是传统的面向对象语言。它采用了不同的方法,使用:组合:由其他对象或...
    编程 发布于2024-11-17
  • 如何在Java中正确通过套接字传输文件?
    如何在Java中正确通过套接字传输文件?
    Java 通过套接字传输文件:发送和接收字节数组在 Java 中,通过套接字传输文件涉及将文件转换为字节数组,通过套接字发送它们,然后在接收端将字节转换回文件。本文解决了 Java 开发人员在实现此文件传输功能时遇到的问题。服务器端问题服务器代码在接收时似乎创建了一个空文件来自客户端的数据。为了解决...
    编程 发布于2024-11-17
  • 如何在 JavaScript 中格式化数字以显示最少的小数位数?
    如何在 JavaScript 中格式化数字以显示最少的小数位数?
    在 JavaScript 中格式化数字关于在 JavaScript 中格式化数字的查询,您可以利用内置函数 toLocaleString() 和minimumFractionDigits 选项。toLocaleString() 方法使您能够根据用户的区域设置或指定的区域设置数字格式语言环境。通过将m...
    编程 发布于2024-11-17
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-17
  • 如何在 Go 中将数字转换为字母?
    如何在 Go 中将数字转换为字母?
    在 Go 中将数字转换为字母了解了将数字转换为字母的需要,让我们探索在 Go 中实现这一目标的各种方法.数字到符文的转换一种简单的方法是将数字添加到常量 'A' - 1,其中每个数字相加代表字母表中的一个字母。例如,加 1 得到“A”,加 2 得到“B”。func toChar(i ...
    编程 发布于2024-11-17
  • 如何在 PHP 中提取不带扩展名的文件名?
    如何在 PHP 中提取不带扩展名的文件名?
    在 PHP 中提取不带扩展名的文件名使用神奇常量 __FILE__ 可以轻松获取 PHP 中当前执行脚本的文件名。但是,如果您需要提取不带扩展名的文件名,例如“.php”后缀,则过程略有不同。basename() 解决方案:要使用basename()函数删除扩展名,您可以:basename(__FI...
    编程 发布于2024-11-17
  • 如何在 PHP 和 MySQL 中同步时区?
    如何在 PHP 和 MySQL 中同步时区?
    在 PHP 和 MySQL 中同步时区您正在开发一个需要使用 PHP date() 函数在 MySQL 中存储日期的应用程序。有必要使用 NOW() 在 MySQL 中比较这些日期来计算时间差异。但是,PHP date() 函数使用 PHP 中定义的时区,而 NOW() 使用 MySQL 服务器中配...
    编程 发布于2024-11-17
  • 如何使用准备好的语句在 PHP MySQLi 中准备安全更新查询?
    如何使用准备好的语句在 PHP MySQLi 中准备安全更新查询?
    如何为更新查询准备语句为了增强使用 PHP MySQLi 查询更新数据库时的数据安全性,建议采用准备好的声明。虽然 PHP 文档提供了有关 bind_param() 的信息,但它缺少特定于更新查询的示例。让我们深入研究如何为更新查询制定准备好的语句:准备查询语句:将更新查询中的所有变量替换为问号:$...
    编程 发布于2024-11-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3