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];
}
}
}
原文地址:https://blog.csdn.net/beijinghorn/article/details/124338529
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_63469.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!