使用备忘录的方法计算组合,例如计算C(n,k).

本文介绍了一种使用备忘录方法来计算组合C(n, k)的Java程序,详细阐述了问题描述、程序使用说明、简要分析和设计,包括递归过程和备忘录记录过程,并提供了多个测试用例验证计算结果的正确性。" 120333411,11437746,使用大华SDK进行网络摄像头图像实时显示与捕获的Qt C++实现,"['SDK开发', '图像处理', 'C++编程', '网络摄像头开发', 'Qt应用']
摘要由CSDN通过智能技术生成

2.1.1问题描述

使用备忘录的方法计算组合,例如计算C(n,k).

2.1.2程序使用说明

Java version:1.8.0_111

IDE:eclipse

直接运行CombinedCalculation.java文件,在控制台查看结果。

2.1.3简要分析和设计

此题主要步骤可以分为两个,递归的过程,记录的过程,计算C(n,k)可以有两种情况假设第一个因子存在于被选择的K个点之中,则只需要在剩下的C-1个因子中选择K-1个因子,假设第一个因子没有存在于K个被选因子中,则需要计算在C-1个因子中选择K个元素。则递归表达式可以写成

 

公式1

上面分析的是递归的过程,下面分析备忘录记录的过程,在程序最开始的时候创建一个矩阵,此处矩阵在程序中的表现为一个二维数组大小为R(n*k),在计算C(N,K)之前先判断二维数组中是否已经存在该值,如果存在,则将该值直接返回回去若不存在,则使用上面的递归表达式计算该值。并保存在数组n,k位置。

伪代码:

输入:需要求解问题c(i,j)中的i,j

输出:问题解出c(i,j)的值

Memorand(M[1...n,1...n],i,j)

If(M[i][j]<0)

M[i][j]=Memorand(M[1...n,1...n],i-1,j)+Memorand(M[1...n,1...n],i-1,j-1)

Return M[i][j]

2.1.4测试用例

测试用例一:(8,1)

结果:8

测试用例二:(8,0)

结果:1

测试用例三:(-8,1)

结果:0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值