maqfab
Messages postés51Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 janvier 2010
-
9 janv. 2006 à 14:26
maqfab
Messages postés51Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 janvier 2010
-
19 janv. 2006 à 09:24
Bonjour à tous,
Ca faisait longtemps que je ne vous avais pas mis à contribution, alors je reviens. Mais là, c'est pas du fastoche fastoche ...
J'ai besoin, pour un calcul d'optimisation, de tester tous les cas possibles.
Entrons dans le concret :
Imaginons une petite fonction bien sympa, à laquelle je donne en paramètre un tableau d'entiers, et qui me retourne, un tableau de tableau d'entiers correspondant à toutes les séries faisables avec ces nombres ... Tableau de retour de taille factorielle par rapport à la longueur du tableau en entrée.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 9 janv. 2006 à 18:07
Les joies (et la puissance) des fonctions récursives :
/// <summary>
/// Calcul les permutation d'une liste d'entier
/// </summary>
/// Liste d'entier
/// <returns>Liste de liste d'entier (une liste par permutation)</returns>
private int[][] Permut(int[] source)
{
int[][] res;
if (source.Length == 1)
{
res = new int[1][];
res[0] = new int[1];
res[0][0] = source[0];
return (res);
}
int nbPermut = Factoriel(source.Length);
res = new int[nbPermut][];
int l;
for (l = 0; l < nbPermut; l++)
{
res[l] = new int[source.Length];
}
l = 0;
for (int i = 0; i < source.Length; i++)
{
int[] subSource = new int[source.Length - 1];
int k = 0;
for (int j = 0; j < source.Length; j++)
{
if (j != i)
{
subSource[k] = source[j];
k++;
}
}
int[][] subRes = Permut(subSource);
for (int m = 0; m < subRes.Length; m++)
{
res[l][0] = source[i];
for (int n = 0; n < subRes[m].Length; n++)
{
res[l][1 + n] = subRes[m][n];
}
l++;
}
}
return (res);
}
/// <summary>
/// Calcul la factorielle d'un entier
/// </summary>
/// n
maqfab
Messages postés51Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 janvier 2010 19 janv. 2006 à 09:24
Merci pour cette réponse qui m'a l'air correcte. J'ai trouvé mon bonheur entre temps sur MSDN.com
Je note l'url ci dessous pour ceux qui cause anglais.
Merci tout de même.