0
点赞
收藏
分享

微信扫一扫

C#,哥伦布数(Golomb Number)的算法与源代码

安七月读书 2022-04-27 阅读 72
c#算法

哥伦布数(Golomb Number)是一个自然数的非减量序列,使得n在序列中正好出现G(n)次。前几个15的G(n)值为:1 2 2 3 3 4 4 4 5 5 5 6 6 6 6

计算结果:

源程序:

using System;

namespace Legalsoft.Truffer.Algorithm
{
	/// <summary>
	/// 哥伦布数(Golomb Number)
	/// 哥伦布数(Golomb Number)是一个自然数的非减量序列,使得n在序列中正好出现G(n)次。
	/// 前几个15的G(n)值为:1 2 2 3 3 4 4 4 5 5 5 6 6 6 6
	/// </summary>
	public static partial class Number_Sequence
	{
		/// <summary>
		/// 哥伦布数(Golomb Number)的原始(递归)算法
		/// </summary>
		/// <param name="n"></param>
		/// <returns></returns>
		public static int Golomb_Number(int n)
		{
			if (n == 1)
			{
				return 1;
			}
			return 1 + Golomb_Number(n - Golomb_Number(Golomb_Number(n - 1)));
		}

		/// <summary>
		/// 哥伦布数(Golomb Number)的改进(非递归)算法
		/// </summary>
		/// <param name="n"></param>
		/// <returns></returns>
		public static int Golomb_Number_Second(int n)
		{
			int[] dp = new int[n + 1];
			dp[1] = 1;
			for (int i = 2; i <= n; i++)
			{
				dp[i] = 1 + dp[i - dp[dp[i - 1]]];
			}
			return dp[n];
		}
	}
}

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

POWER BY TRUFFER.CN

举报

相关推荐

0 条评论