C#,恩廷格尔组合数(Entringer Number)的算法与源程序

news2024/11/16 22:02:14

恩廷格尔组合数(Entringer Number)组合数学的序列数字之一。

E(n,k)是{1,2,…,n+1}的排列数,从k+1开始,先下降后上升。

计算结果:

源代码:

1 文本格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    /// <summary>
    /// Entringer Number
    /// Entringer数E(n,k)是{1,2,…,n+1}的排列数,从k+1开始,先下降后上升。
    /// </summary>
    public static partial class Number_Sequence
    {
        /// <summary>
        /// 恩廷格尔组合数的原始(递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="k"></param>
        /// <returns></returns>
        public static int Entringer_Number(int n, int k)
        {
            if (n == 0 && k == 0)
            {
                return 1;
            }
            if (k == 0)
            {
                return 0;
            }
            return Entringer_Number(n, k - 1) + Entringer_Number(n - 1, n - k);
        }

        /// <summary>
        /// 恩廷格尔组合数的改进(非递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="k"></param>
        /// <returns></returns>
        public static int Entringer_Number_Second(int n, int k)
        {
            int[,] dump = new int[n + 1, k + 1];
            dump[0, 0] = 1;
            for (int i = 1; i <= n; i++)
            {
                dump[i, 0] = 0;
            }
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= Math.Min(i, k); j++)
                {
                    dump[i, j] = dump[i, j - 1] + dump[i - 1, i - j];
                }
            }
            return dump[n, k];
        }
    }
}
 

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

POWER BY TRUFFER.CN

2 代码格式 

using System;

namespace Legalsoft.Truffer.Algorithm
{
    /// <summary>
    /// Entringer Number
    /// Entringer数E(n,k)是{1,2,…,n+1}的排列数,从k+1开始,先下降后上升。
    /// </summary>
    public static partial class Number_Sequence
    {
        /// <summary>
        /// 恩廷格尔组合数的原始(递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="k"></param>
        /// <returns></returns>
        public static int Entringer_Number(int n, int k)
        {
            if (n == 0 && k == 0)
            {
                return 1;
            }
            if (k == 0)
            {
                return 0;
            }
            return Entringer_Number(n, k - 1) + Entringer_Number(n - 1, n - k);
        }

        /// <summary>
        /// 恩廷格尔组合数的改进(非递归)算法
        /// </summary>
        /// <param name="n"></param>
        /// <param name="k"></param>
        /// <returns></returns>
        public static int Entringer_Number_Second(int n, int k)
        {
            int[,] dump = new int[n + 1, k + 1];
            dump[0, 0] = 1;
            for (int i = 1; i <= n; i++)
            {
                dump[i, 0] = 0;
            }
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= Math.Min(i, k); j++)
                {
                    dump[i, j] = dump[i, j - 1] + dump[i - 1, i - j];
                }
            }
            return dump[n, k];
        }
    }
}

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

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

相关文章

五、Flask学习之MySQL

五、Flask学习之MySQL 1. 下载MySQL 下载教程&#xff1a;MySQL安装及可视化工具SQLyog下载 2.常用指令 2.1. 查看已有数据库 show databases;2.2. 创建数据库 create database 名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;2.3. 删除数据库 drop database 名字;…

计算机毕业设计 | SSM 凌云招聘平台(附源码)

1&#xff0c;绪论 人力资源是企业产生效益、创造利润的必不可少的、最重要的资源。人作为人力资源的个体可看作是一个承载着有效知识、能力的信息单元。这样的信息单元可看作是一个为企业产生价值和利润的个体。从而使得这样的信息单元所具有的信息就是一个有价值的信息。 校…

stripped文件描述以及gdb反汇编工具使用

往期地址&#xff1a; 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

缓存问题 | 缓存穿透,缓存击穿,缓存雪崩

缓存穿透 关键字&#xff1a;强调缓存和数据库都没有数据并发访问 缓存穿透是指数据库和缓存都没有的数据&#xff0c;每次都要经过缓存去访问数据库&#xff0c;大量的请求有可能导致DB宕机。 应对策略&#xff1a; 使用布隆过滤器&#xff08;Bloom Filter&#xff09;&am…

PythonPDF编辑库之pypdf使用详解

概要 PDF&#xff08;Portable Document Format&#xff09;是一种常见的文档格式&#xff0c;广泛用于存储和共享文本和图像数据。在 Python 中&#xff0c;有许多库可以用于处理 PDF 文件&#xff0c;其中之一就是 PyPDF。PyPDF 是一个功能强大的库&#xff0c;它允许你读取…

RK3568平台 麦克风PDM接口录音

一.PDM接口简介 PDM Pulse Density Modulation是一种用数字信号表示模拟信号的调制方法。 PDM则使用远高于PCM采样率的时钟采样调制模拟分量&#xff0c;只有1位输出&#xff0c;要么为0&#xff0c;要么为1。因此通过PDM方式表示的数字音频也被称为Oversampled 1-bit Audio…

Leetcode—145. 二叉树的后序遍历【简单】

2023每日刷题&#xff08;九十七&#xff09; Leetcode—145. 二叉树的后序遍历 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr…

Go、容器以及Linux调度器

在容器中运行Go应用程序时&#xff0c;需要设置合理的GOMAXPROCS&#xff0c;从而避免调度中因为资源不足而造成STW。原文: Go, Containers, and the Linux Scheduler Go开发的应用程序通常部署在容器中。在容器中运行时&#xff0c;重要的一点是要设置CPU限制以确保容器不会耗…

十款数据可视化工具横评:优缺点大揭秘

作为一位热衷于数据可视化的爱好者&#xff0c;我深知选择一款得心应手的数据可视化工具对于呈现数据的魅力至关重要。在市面上众多的数据可视化工具中&#xff0c;我精选了十款备受瞩目的产品&#xff0c;下面就为大家简单介绍一下它们的优缺点&#xff0c;以帮助大家进行选择…

Windows下载安装并启动 Elasticsearch(ES)

我们先访问官网链接 https://www.elastic.co/cn/downloads/elasticsearch 进入官网后 Choose platform 选择我们自己的电脑系统 我这里是 Windows 然后 点击如下图 箭头指向的这个下载按钮 它就开始下了 这个文件还是偏大的 然后 这里 我创建一个目录 专门用来装它 然后 我…

SD342X-16Q双偏心软密封蝶阀的选型技巧分享

SD342X-16Q双偏心软密封蝶阀的选型技巧分享 选择SD342X-16Q双偏心软密封蝶阀软密封蝶阀时&#xff0c;需要考虑以下几个事项&#xff1a; 1.流体性质&#xff1a; 了解流体的压力、温度、粘度等特性&#xff0c;选择适合的软密封材料。不同材料对于不同流体具有不同的耐腐蚀性…

mac滚动截图

参考博客 https://www.zhihu.com/question/313673726/answer/2938671835 首先去AppStore搜索 iShot 这个也是要钱的&#xff0c;不过我输入appleID后&#xff0c;并没有扣我钱&#xff0c;不知道设么回事 然后打开iShot 点击观看视频&#xff0c;然后mac会自动打开一个新的…

OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能

OpenAI降低了GPT-3.5 Turbo模型的API访问价格&#xff0c;输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网&#xff1a;OpenAI AIGC专区&#xff1a;aigc 教程专区&#xff1a;AI绘画&#xff0c;AI视频&#x…

【HarmonyOS应用开发】TypeScript快速入门(二)

内容比较长&#xff0c;干货满满&#xff0c;全是实战操作内容&#xff0c;希望耐心观看&#xff0c;如果对你有所帮助&#xff0c;请点个赞&#xff01; ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript&#xff08;简称TS&#xff09;的基础上&#xff0c;匹配ArkUI…

CSDN年度报告图片卡通小人收集

摘要&#xff1a;CSDN推出的年度报告真的太赞了&#xff0c;还定制了诸如“情感的编织者”“敏锐的激励者”“灵感的捕捉者”“组织的表达者”“洞悉的指挥家”“心灵的领航员”“生动的记录者”“温暖的叙述者”“理性的探索者”等等精准且浪漫的标签&#xff0c;加上非常有灵…

嵌入式linux学习之实践操作

​ 前沿 1. 安装交叉编译器 在开发板光盘 A-基础资料->5、开发工具->1、交叉编译器路径下找到 st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh。将它拷贝到 Ubuntu 虚拟机上。 拷贝到 Ubuntu 后&#xff0c;赋予 st-exam…

快速搭建一个基于MVC架构的Spring Boot应用

提示&#xff1a;如果对 MVC 架构模式不熟悉可以看我的博客 > MVC架构模式与三层架构 快速搭建一个基于MVC架构的Spring Boot应用 一、Web 服务二、快速构建一个Spring Web MVC的 Web 应用1.使用脚手架快速的搭建环境&#xff1a;2.准备数据库&#xff1a;3.编写Dao层访问数…

Vue3在css中使用v-bind绑定js/ts变量,也可以在scss和less中使用方式

主要介绍Vue3中的新增的v-bind()的常用使用方式&#xff0c;主要包括在css,less,scss中的使用&#xff0c;可以参考官方文档查看&#xff1a;Vue3官方文档 特别提醒 如果你想在scss中或者less中使用&#xff0c;可能会报各种乱七八糟的错误&#xff0c;最快最好用的方式就是单…

远程git开发

两种本地与远程仓库同步 """ 1&#xff09;你作为项目仓库初始化人员&#xff1a;线上要创建空仓库 > 本地初始化好仓库 > 建立remote链接(remote add) > 提交本地仓库到远程(push)2&#xff09;你作为项目后期开发人员&#xff1a;远程项目仓库已经创…

Github 2024-01-27 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-27统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3Jupyter Notebook项目2非开发语言项目2JavaScript项目1Go项目1Rust项目1Shell项目1 Papers We Lo…