C#,德兰诺依数(Dealnnoy Number)的算法与源代码

news2024/12/25 1:08:27

1 Dealnnoy Number 德兰诺依数,德兰诺伊数

德兰诺依数是以法国军官、业余数学家亨利·德兰诺依(Henry Dealnnoy)的名字命名。

Henry Dealnnoy

在组合数学中,德兰诺依数描述了从(0,0)到(m,n)的格路问题中,
只允许按照(0,1)、(1,0)或者(1,1)的方式来走,一共有多少不同的方案数。

Dealnnoy Number的计算公式:

 计算结果:

 源程序:

2 文本格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    /// <summary>
    /// Dealnnoy Number
    /// 德兰诺依数,德兰诺伊数
    /// </summary>
    public static partial class Number_Sequence
    {
        /// <summary>
        /// 德兰诺伊数(Dealnnoy Number)的原始(递归)算法
        /// n >= m
        /// </summary>
        /// <param name="n"></param>
        /// <param name="m"></param>
        /// <returns></returns>
        public static int Dealnnoy_Number(int n, int m)
        {
            if (m == 0 || n == 0)
            {
                return 1;
            }
            return Dealnnoy_Number(m - 1, n - 1) +
                   Dealnnoy_Number(m - 1, n) +
                   Dealnnoy_Number(m, n - 1);
        }

        /// <summary>
        /// 德兰诺伊数(Dealnnoy Number)的改良(非递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="m"></param>
        /// <returns></returns>
        public static int Dealnnoy_Number_Second(int n, int m)
        {
            int[,] dp = new int[m + 1, n + 1];
            // 原文错误!
            for (int i = 0; i <= m; i++)
            {
                dp[i, 0] = 1;
            }
            for (int i = 0; i <= n; i++)
            {
                dp[0, i] = 1;
            }
            for (int i = 1; i <= m; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    dp[i, j] = dp[i - 1, j] + dp[i - 1, j - 1] + dp[i, j - 1];
                }
            }
            return dp[m, n];
        }
    }
}

————————————————————

POWER BY TRUFFER.CN

3 代码格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    /// <summary>
    /// Dealnnoy Number
    /// 德兰诺依数,德兰诺伊数
    /// </summary>
    public static partial class Number_Sequence
    {
        /// <summary>
        /// 德兰诺伊数(Dealnnoy Number)的原始(递归)算法
        /// n >= m
        /// </summary>
        /// <param name="n"></param>
        /// <param name="m"></param>
        /// <returns></returns>
        public static int Dealnnoy_Number(int n, int m)
        {
            if (m == 0 || n == 0)
            {
                return 1;
            }
            return Dealnnoy_Number(m - 1, n - 1) +
                   Dealnnoy_Number(m - 1, n) +
                   Dealnnoy_Number(m, n - 1);
        }

        /// <summary>
        /// 德兰诺伊数(Dealnnoy Number)的改良(非递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="m"></param>
        /// <returns></returns>
        public static int Dealnnoy_Number_Second(int n, int m)
        {
            int[,] dp = new int[m + 1, n + 1];
            // 原文错误!
            for (int i = 0; i <= m; i++)
            {
                dp[i, 0] = 1;
            }
            for (int i = 0; i <= n; i++)
            {
                dp[0, i] = 1;
            }
            for (int i = 1; i <= m; i++)
            {
                for (int j = 1; j <= n; j++)
                {
                    dp[i, j] = dp[i - 1, j] + dp[i - 1, j - 1] + dp[i, j - 1];
                }
            }
            return dp[m, n];
        }
    }
}

 

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

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

相关文章

《【Python】如何设置现代 Python 日志记录 | Python 基础教程 | Python 冷知识 | 十分钟高手系列》学习笔记

《【Python】如何设置现代 Python 日志记录 | Python 基础》 2 PUT ALL HANDLERS/FILTERS ON THE ROOT&#xff1a;扁平化的设计有助于简化维护成本 5 STORE CONFIG IN JSON OR YAML FILE&#xff1a;使用配置文件可以将配置和代码解耦&#xff0c;减少代码量 日志设置示例 7 …

springboot3+vue3支付宝交易案例-结算支付

springboot3vue3支付宝交易案例-结算支付&#xff01;今天下午整理了一下结算的内容。遇到了很多问题。汇总分享给大家。 第一个问题&#xff1a;支付宝结算后&#xff0c;返回的交易编码&#xff0c;和交易时间&#xff0c;交易状态&#xff0c;都应该使用varchar来存。 第二…

Python面向对象编程:探索代码的结构之美

文章目录 一、引言二、为什么学习面向对象编程2.1 提高代码的可维护性&#xff1a;通过封装、继承和多态实现模块化设计2.2 提升代码的复用性&#xff1a;通过类和对象的创建实现代码的重用 三、类和对象的基本概念3.1 类和对象的定义和关系&#xff1a;类是对象的模板&#xf…

【数据结构 06】二叉树

一、原理 二叉树算法核心思维&#xff1a;递归 满二叉树&#xff1a;二叉树的层数为K&#xff0c;节点数为 完全二叉树&#xff1a;二叉树的层数为K&#xff0c;前K-1层是满的&#xff0c;第K层是连续的 满二叉树是完全二叉树的子集。 任意二叉树&#xff1a;若叶子节点的…

NC248:左叶子之和(C++)

1.题目描述 2.题目分析 我们以一个二叉树为例 左叶子的特点是什么&#xff1f; 是左节点并且没有左右孩子节点 所以我们用leftnode保存root->lefe节点&#xff0c;判断条件为leftnode存在&#xff0c;并且不存在leftnode->left和leftnode->right&#xff0c;如果满…

事务、MVCC、锁

目录 事务MVCC锁 事务 四大特性&#xff1a;ACID 脏读&#xff1a;事务A读取到未提交事务B修改的数据 不可重复读&#xff1a;事务A修改了未提交事务B读取的数据 幻读&#xff1a;事务A增删了未提交事务B读取的数据 不可重复读与幻读都是读取的结果不同&#xff0c;前者侧重于…

常用芯片学习——CD4094芯片

CD4094 8位移位寄存器/3态输出缓冲器 使用说明 CD4094是由一个 8 位串行移位寄存器和一个 3 态输出缓冲器组成的 CMOS 集成电路。寄存器带有存储锁存功能&#xff0c;集成电路根据 STROBE 信号确定锁存器是否接收移位寄存器各位数据&#xff0c;数据是否由锁存器传输到 3 态输…

单元测试 | Junit4“单元测试“ ( Java中可用 )

目录: 使用JUnit4进行“单元测试” 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正在努力学习、努力敲代码中! 让我们一起继续努力学习&#xff01; 文章用于本人学习使用 &#xff0c; 同时希望能帮助大家。 欢迎大家点赞&#x1f44d; 收藏⭐ …

HarmonyOS 鸿蒙驱动消息机制管理

驱动消息机制管理 使用场景 当用户态应用和内核态驱动需要交互时&#xff0c;可以使用HDF框架的消息机制来实现。 接口说明 消息机制的功能主要有以下两种&#xff1a; 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 表1 消息机制接口 方法描述struct …

扩展学习|商业智能和大数据分析的研究前景(比对分析)

文献来源&#xff1a; Liang T P , Liu Y H .Research Landscape of Business Intelligence and Big Data analytics: A bibliometrics study[J].Expert Systems with Applications, 2018, 111(NOV.):2-10.DOI:10.1016/j.eswa.2018.05.018. 信息和通信技术的快速发展导致了数字…

【LVGL源码移植环境搭建】

LVGL源码移植&环境搭建 ■ LVGL源码移植■ 下载LVGL源码■ 修改LVGL文件夹■■■■ 视频链接 Ubuntu模拟器环境建置 ■ LVGL源码移植 ■ 下载LVGL源码 LVGL源码 我们以选择v8.2.0为例&#xff0c;选择8.2.0下载 ■ 修改LVGL文件夹 1.我们只需要关注这5个文件即可&…

公司在数字化过程中犯的7个错误,及其解决方法

今天&#xff0c;大多数公司都意识到技术提供了转变其业务模式和产品的机会。但是&#xff0c;没有多少人知道他们在采用时所犯的错误。 既然我们现在都同意数字化转型不是一种选择&#xff0c;我们不妨拥抱变化并学习如何最好地采用它。但说起来容易做起来难&#xff0c;不是…

网页版idea、pycharm搭建

官网教程提供了两种方法&#xff1a;1、有给应用版idea或pycharm安装插件来开放网页服务&#xff1b;2、使用docker创建容器开放网页服务。这边推荐并介绍第二种步骤。 基本过程为&#xff1a;拉取相关镜像&#xff1b;开启服务&#xff1b;使用网页版 &#xff08;细节和注意点…

目标检测算法训练数据准备——Penn-Fudan数据集预处理实例说明(附代码)

目录 0. 前言 1. Penn-Fudan数据集介绍 2. Penn-Fudan数据集预处理过程 3. 结果展示 4. 完整代码 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如…

Python爬虫获取淘宝商品详情页数据|实现自动化采集商品信息

近年来&#xff0c;随着互联网的发展&#xff0c;越来越多的数据以网页的形式存在于各个网站上。对于数据分析师、研究员或者仅仅是对数据感兴趣的人来说&#xff0c;如何高效地提取和分析网页数据成为了一项重要的技能。Python作为一门强大的编程语言&#xff0c;通过其丰富的…

【pytorch】nn.linear 中为什么是y=xA^T+b

我记得读教材的时候是yWxb, 左乘矩阵W&#xff0c;这样才能表示线性变化。 但是pytorch中的nn.linear中&#xff0c;计算方式是yxA^Tb&#xff0c;其中A是权重矩阵。 为什么右乘也能表示线性变化操作呢&#xff1f;因为pytorch中&#xff0c;照顾到输入是多个样本一起算的&…

【Ubuntu 22.04.3 LTS】apt-get下载安装有关问题可能原因及解决方法

ubuntu 22.04.3 LTS unaccountably error 装啥啥没依赖 可能是用了不合适的源&#xff0c;换个就好了 Now, let’s take a look at the lsb_release output, with a special focus on the Codename, which could be a crucial piece of information. The lsb_release comm…

使用ChatGPT学习大象机器人六轴协作机械臂mechArm

引言 我是一名机器人方向的大学生&#xff0c;近期学校安排自主做一个机器人方面相关的项目。学校给我们提供了一个小型的六轴机械臂&#xff0c;mechArm 270M5Stack&#xff0c;我打算使用ChatGPT让它来辅助我学习如何使用这个机械臂并且做一个demo。 本篇文章将记录我是如何使…

Windows编程入门-窗口控件-资源操作

window控件&#xff1a; 控件是常见的窗口上的交互元素例如&#xff1a;一个按钮&#xff0c;一个复选框&#xff0c;一个列表框等。 当控件的特定功能被触发后&#xff0c;会主动发送消息通知父窗口&#xff0c;父窗口可以通过发送消息给控件控制控件的行为。 控件的本质是一个…

使用visual studio写一个简单的c语言程序

官网下载visual studio&#xff0c;社区版免费的 https://visualstudio.microsoft.com/zh-hans/ 下载好以后选择自己的需求进行安装&#xff0c;我选择了两个&#xff0c;剩下的是默认。 创建文件&#xff1a;