NEFU离散数学实验1-排列组合

相关概念 

在离散数学中,组合数是一种用于计算从n个不同元素中选取m个元素的方式。以下是一些与组合数相关的概念:

  1. 排列:从n个不同元素中选取m个元素进行排列,排列数用P(n, m)表示,计算公式为P(n, m) = n! / (n - m)!

  2. 组合:从n个不同元素中选取m个元素进行组合,组合数用C(n, m)表示,计算公式为C(n, m) = n! / (m! * (n - m)!)

  3. 二项式系数:组合数也称为二项式系数,表示为C(n, m)。二项式系数可以用来展开二项式表达式的系数,如(a + b)^n的展开式中,每一项的系数就是C(n, m)。

  4. 杨辉三角形:杨辉三角形是一种图形化展示组合数的方式。在杨辉三角形中,每个数是它上方两个数之和,每一行的两端数都为1,其余数为上方两个数之和。杨辉三角形中的每个数就是组合数C(n, m)。

  5. 组合恒等式:组合恒等式是指一系列关于组合数的等式,如C(n, m) = C(n, n - m),C(n, m) = C(n - 1, m - 1) + C(n - 1, m)等等。这些等式可以用于简化组合数的计算。

1. (程序题)

非降路径

在平面直角坐标系内,有(a,b)和(c,d)两点,且a,b,c,d都大于0,而且(c,d)点位于(a,b)点的右上方!

从(a,b)出发走到(c,d)点,只能向上走和向右走,请问共有多少种走法(非降路径数)?

输入:

输入a,b,c,d(0<=a,b,c,d<=12)

输出:

输出非降路径数!

例子输入:

0 0 2 2

例子输出:

6

#include <iostream>using namespace std;int Count(int n,int m){if(n==m||m==0)return 1;elsereturn Count(n-1,m)+Count(n-1,m-1);}int main(){int a,b,c,d,sum;while(cin>>a>>b>>c>>d){sum=Count(c-a+d-b,c-a);cout<<sum<<endl;}return 0;}

直接用书上P199公式吧

ans=C_{c-a+d-b}^{c-a}

本质是求组合数,数据非常友好,但是你直接阶乘会溢出的,所以我们求组合数要用递推式

2. (程序题)特殊的非降路径

设a,b,c,d,m,n是非负整数,其中 a<=c<=m,b<=d<=n;请你计算从(a,b)点经过(c,d)点到(m,n)点的非降路径数?

输入:

在一行内输入a,b,c,d,m,b,所有的数值范围为【0-14】,本题为单组数据。

输出:

在一行内输出非降路径数。

例子输入:

0 0 1 1 2 2

例子输出:

4

#include <iostream>using namespace std;int Count(int n,int m){if(n==m||m==0)return 1;elsereturn Count(n-1,m)+Count(n-1,m-1);}int main(){int a,b,c,d,m,n,result1,result2,sum;cin>>a>>b>>c>>d>>m>>n;result1=Count(c-a+d-b,c-a);result2=Count(m-c+n-d,m-c);sum=result1*result2;cout<<sum<<endl;return 0;}

在这道题目中,从(a,b)点到(c,d)点的非降路径数,就相当于从c-a+d-b个元素中选择c-a个元素的组合数,因为每一步只能向右或者向下走,所以总共需要走c-a+d-b步,其中有c-a步向右走。同理,从(c,d)点到(m,n)点的非降路径数,就相当于从m-c+n-d个元素中选择m-c个元素的组合数。所以,从(a,b)点经过(c,d)点到(m,n)点的非降路径数,就是这两个组合数的乘积。 

3. (程序题)简单组合:

计算C(n,m)的值,C(n,m)代表从n个元素中选取m个元素的方法数,其中有1<= m <= n<= 65。

输入:

输入数据有多组,每组数据一行,有2个整数分别为n和m。

输出:

输出从总共n个元素中选出m个元素共有多少种方法?

例子输入:

2 2

4 2

例子输出:

1

6

 一般解法

#include <iostream>using namespace std;long long  Count(long long n,long long m){if(n==m||m==0)return 1;elsereturn Count(n-1,m)+Count(n-1,m-1);}int main(){long long n,m,result,sum;while(cin>>n>>m)
{sum=Count(n,m);cout<<sum<<endl;}return 0;}

计算从n个元素中选取m个元素的组合数。它使用了递归的方法,利用了组合数的性质:

C_n^m=C_{n-1}^m+C_{n-1}^{m-1}

问题

上述代码中的 Count 函数使用了递归方式计算组合数,对于大的输入值可能会导致栈溢出或运行时间较长。对于较大的组合数计算,推荐使用动态规划或组合数公式进行计算。 

#include <iostream>
using namespace std;long long combination(int n, int m) {long long dp[66][66] = {0};for (int i = 0; i <= n; i++) {dp[i][0] = 1;dp[i][i] = 1;}for (int i = 1; i <= n; i++) {for (int j = 1; j < i; j++) {dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1];}}return dp[n][m];
}int main() {int n, m;while (cin >> n >> m) {long long result = combination(n, m);cout << result << endl;}return 0;
}

dp 是一个二维数组,用于保存计算过程中的中间结果。dp[i][j] 表示从 i 个元素中选择 j 个元素的组合数。C_n^m=C_{n-1}^m+C_{n-1}^{m-1}

4. (程序题)小兔的棋盘

小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧 !

输入:

多组输入,每次输入一个数n(1<=n<=35),当n等于-1时结束输入。

输出:

对于每个输入数据输出路径数,具体格式看Sample。

例子输入:

12

 -1

例子输出:

1 1 2 

2 3 10 

3 12 416024

#include <iostream>
using namespace std;typedef long long LL;LL a[71][71],i,j,n;int main() {for(int i=0;i<=70;i++)a[i][i]=a[i][0]=1;for(i=2;i<=70;i++)for(j=1;j<=70;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];int t=0;LL ans=0;while(cin>>n&&n!=-1){t++;ans=a[2*n][n]*2;ans=ans/(n+1);cout<<t<<" "<<n<<" "<<ans<<endl;}return 0;}

 

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

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

相关文章

nodejs+vue家教管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1nodejs简介 4 2.2 express框架介绍 6 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性…

基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)

1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造&#xff1a;在工业制造过程中&#xff0c;精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数&#xff0c;进而实…

【网络安全】如何保护IP地址?

使用防火墙是保护IP地址的一个重要手段。防火墙可以监控和过滤网络流量&#xff0c;并阻止未经授权的访问。一家网络安全公司的研究显示&#xff0c;超过80%的企业已经部署了防火墙来保护他们的网络和IP地址。 除了防火墙&#xff0c;定期更新操作系统和应用程序也是保护IP地址…

学信息系统项目管理师第4版系列24_整合管理

1. PMBOK 1.1. 自1987年以来&#xff0c;PMBOK-直是基于过程的项目管理标准的重要代表 1.1.1. 基于过程的方法是项目管理的基石 1.2. 从2021年开始&#xff0c;第7版PMBOK采用了基于原则的标准&#xff0c;其中包含了 12个项目管理基本原则&#xff0c;这些基本原则为有效的…

Python数据攻略-递归方式实现json多层级数据展平

之前介绍过使用pandas如何展平json的多层数据,如果有兴趣可以参考文章 Python数据攻略-Pandas的json_normalize方法 Python数据攻略-递归方式实现json多层级数据展平 今天再介绍一个非常好用的使用递归的方式展平json数据。 文章目录 数据处理目标操作示例核心函数方法操作…

硬件基本功--过流、过压保护电路

1.简介 过流保护(OCP)&#xff1a;当电路电流超过预定最大值时&#xff0c;使保护装置动作的一种保护方式。不允许超过预定最大值电流&#xff0c;不然会烧坏电路的器件。过压保护(OVP)&#xff1a;被保护电路电压超过预定的最大值时&#xff0c;使电源断开或使受控设备电压降低…

AAPT2简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用介绍3.3 编译3.2 链接3.3 dump…

ChatGPT AIGC 高效办公自动化案例

根据业务员姓名查找对应月份的科目成绩。 我们让ChatGPT AIGC来完成Excel公式。 Prompt:有一个表格A列为姓名,B列为语文,C列为数学,请根据J2单元格的姓名 ,查找出对应的数学成绩,请写出函数来完成 将生成的vlookup函数公式=VLOOKUP(J2, A:C, 3, FALSE)复制到表格中进行验…

Windows11下清理Docker Desktop与wsl的C盘空间占用

一、清理Docker Desktop的磁盘占用 //【查看docker 占用的空间】 docker system dfTYPE 列出了docker 使用磁盘的 4 种类型&#xff1a; Images&#xff1a;所有镜像占用的空间&#xff0c;包括拉取下来的镜像&#xff0c;和本地构建的。Containers&#xff1a;运行的容器占用…

整理mongodb文档:副本集成员可以为偶数

个人博客 整理mongodb文档:副本集成员可以为偶数 想了下&#xff0c;仲裁节点还是不想直接说太多&#xff0c;怕有的同学想太多&#xff0c;且本身副本集就偏向运维的&#xff0c;新手基本也没什么权限操作&#xff0c;就不多废话了。 文章概叙 文章从MongoDB是否可以用偶数…

【计算机网络笔记】计算机网络的结构

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 文章目录 系列文章目录网络边缘接入网络数字用户线路 (DSL)电缆网络典型家庭网络的接入机构&#xff08;企业&#xff09;接入网络 (Ethernet)无线接入网络 网络核心Internet结构最后 计算机网络的结构…

scratch保护环境 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch保护环境 一、题目要求 1、准备工作 2、功能实现 二、案例分析

panads操作excel

panads简介 pandas是基于Numpy创建的Python包&#xff0c;内置了大量标准函数&#xff0c;能够高效地解决数据分析数据处理和分析任务&#xff0c;pandas支持多种文件的操作&#xff0c;比如Excel&#xff0c;csv&#xff0c;json&#xff0c;txt 文件等&#xff0c;读取文件之…

android studio 我遇到的Task :app:compileDebugJavaWithJavac FAILED问题及解决过程

前几天一个网友在学习我的一个小项目的时候&#xff0c;发现无法达到目的&#xff0c;在帮他解决问题的过程中发现他用的是最近的giraffe版本的as&#xff0c;我用的是老版本&#xff0c;没办法打开他的项目&#xff0c;没办法只能卸载我的as&#xff0c;安装了最近版的diraffe…

华为云云耀云服务器L实例评测 | 实例使用教学之综合导览

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之综合导览 实例使用教学实例场景体验实例性能评测实例评测使用介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀云…

3、TCP状态

TCP状态 1、TCP通信时序 三次握手成功后&#xff0c;服务器和客户端进入了状态ESTABLISHED 当处于Time_WAIT状态后&#xff0c;不会马上变成CLOSE状态&#xff0c;会经历2MSL&#xff08;约40秒&#xff09;&#xff0c;之后才会进入CLOSE状态。 总结&#xff1a; 主动发起…

NodeJs中使用JSONP和Cors实现跨域

跨域是为了解决浏览器请求域名&#xff0c;协议&#xff0c;端口不同的接口&#xff0c;相同的接口是不需要实现跨域的。 1.使用JSONP格式实现跨域 实现步骤 动态创建一个script标签 src指向接口的地址 定义一个函数和后端调用的函数名一样 实现代码 -- 在nodejs中使用http内…

单目标应用:墨西哥蝾螈优化算法(Mexican Axolotl Optimization,MAO)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、墨西哥蝾螈优化算法MAO 墨西哥蝾螈优化算法&#xff08;Mexican Axolotl Optimization&#xff0c;MAO&#xff09;由Yenny Villuendas-Rey 1等人于2021…

棱镜七彩参编!开源领域4项团体标准正式发布

近日&#xff0c;中电标2023年第27号团体标准公告正式发布&#xff0c;《T/CESA 1270.2-2023 信息技术 开源治理 第 2 部分&#xff1a;企业治理评估模型》、《T/CESA 1270.3-2023 信息技术 开源治理 第 3 部分&#xff1a;社区治理框架》、《T/CESA 1270.5-2023 信息技术 开源…

FastAPI学习-27 使用@app.api_route() 设置多种请求方式

对同一个访问函数设置多个http 请求方式 api_route 使用 使用methods 参数设置请求方式 from fastapi import FastAPIapp FastAPI() app.api_route(/demo/b, methods[get, post]) async def demo2(): return {"msg": "demo2 success"}判断请求方式…