Une petite application de la dynamic programming

Contenu du snippet

Ceci est un exemple simple de programmation dynamique appliquée au calcul d'une suite de fibonacci du genre Un = Un-1 +Un-2

Source / Exemple :


using System;

namespace fibo_dp
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		public static int[] G=new int[50000];
		public static Int32 CalcFibo(int i)
		{
			switch (i)
			{
				case 1:
				case 0:
				case 2:
					return 1;
				   
				default:
					return CalcFibo(i-1)+CalcFibo(i-2);

				   
			}
		}
		public static Int32 CalcFiboDp(int i)
	    { 
			
			if (G[i]!=0) 
				return G[i];
			else
			{
				G[i]=CalcFiboDp(i-1) + CalcFiboDp(i-2);
				return G[i];
			}

	}
		
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			//
			// TODO: Add code to start application here
			//
			
			for (int n=0;n<50000;n++)
			{
				G[n]=0;
			}
			G[0]=0;G[1]=1;G[2]=1;
            if (args.Length==0)
			{
				Console.WriteLine("Give me number");
				return;
			}
			if (args.Length==1)
				Console.WriteLine( CalcFibo((Convert.ToInt16(args[0]))));
			else
				if (args.Length==2)
			{
				Console.WriteLine(CalcFiboDp(Convert.ToInt16(args[0])));
			}

		}
	}
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.