动态规划 计算二项式系数

2023-10-10 23:59

本文主要是介绍动态规划 计算二项式系数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

动态规划计算二项式系数,主要用到了一个性质C(m,n)=C(m,n-1)+C(m-1,n-1);

这个式子将C(m , n)的计算问题表述为了问题描述)C(m-1 , n -1)和C(m -1,n)两个较小的交叠子问题

初始条件:C(m , m) = C(n , 0) = 1

得到c(n,k):


代码1(c(n,k):k为固定值):


[java] view plain copy
  1. import java.util.Scanner;  
  2.   
  3. /** 
  4.  *  
  5.  * @author fool song 计算二项式 某一特定的值(记录表横向填) 
  6.  *  
  7.  */  
  8. public class BinoCoeff3 {  
  9.     public static void main(String[] args) {  
  10.         // C(n,m)  
  11.         System.out.println("求C(n,m)");  
  12.         System.out.println("输入n:");  
  13.         Scanner input = new Scanner(System.in);  
  14.         int n = Integer.valueOf(input.nextInt());  
  15.         System.out.println("输入m:");  
  16.         int m = Integer.valueOf(input.nextInt());  
  17.         getBinoCoeff(n,m);  
  18.     }  
  19.   
  20.     public static void getBinoCoeff(int n,int m) {  
  21.         int[][] arr = new int[n + 1][n + 1];  
  22.         boolean yn=true;  
  23.         for (int i = 0; i <= n; i++) {  
  24.             for (int j = 0; j < i + 1; j++) {  
  25.                 if (i == j || j == 0) {  
  26.                     arr[i][j] = 1;  
  27.                 } else {  
  28.                     arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];  
  29.                 }  
  30.                 if(i==n&&j==m){  
  31.                     yn=false;  
  32.                     break;  
  33.                 }  
  34.             }  
  35.             if(yn==false){  
  36.                 break;  
  37.             }  
  38.         }  
  39.         System.out.println("c("+n+","+m+")="+arr[n][m]);  
  40.     }  
  41.   
  42. }  


代码2(求c(n,k):k=0……n):


[java] view plain copy
  1. import java.util.Scanner;  
  2.   
  3. /** 
  4.  *  
  5.  * @author fool song 计算二项式系数 求出所有项 
  6.  */  
  7. public class BinoCoeff2 {  
  8.     public static void main(String[] args) {  
  9.         // C(n,m)  
  10.         System.out.println("输入n:");  
  11.         Scanner input = new Scanner(System.in);  
  12.         int n = Integer.valueOf(input.nextInt());  
  13.         getBinoCoeff(n);  
  14.     }  
  15.   
  16.     public static void getBinoCoeff(int n) {  
  17.         int[][] arr = new int[n + 1][n + 1];  
  18.         for (int i = 0; i <= n; i++) {  
  19.             for (int j = 0; j < i + 1; j++) {  
  20.                 if (i == j || j == 0) {  
  21.                     arr[i][j] = 1;  
  22.                 } else {  
  23.                     arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];  
  24.                 }  
  25.             }  
  26.         }  
  27.         printf(arr, n);  
  28.     }  
  29.   
  30.     public static void printf(int[][] arr, int n) {  
  31.         for (int i = 0; i < n + 1; i++) {  
  32.             System.out.println("c("+n+","+i+")="+arr[n][i]);  
  33.         }  
  34.     }  

这篇关于动态规划 计算二项式系数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184042

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti