public override bool Equals(object obj) { // Et1.Equals(null) retourne false if (obj == null) { return(false); } // Si l'objet ne peut être casté en Etat ex et1.Equals(3) ça retourne false Etat et = obj as Etat; if ((System.Object)et == null) { return(false); } // Retourne true si tous les champs sont égaux: int dim1 = et.tab.Length; int dim2 = this.tab.Length; if (dim1 != dim2) { return(false); } for (int i = 0; i < dim1; i++) { if (et.tab[i] != this.tab[i]) { return(false); } } return(true); }
/// <summary> /// Met à jour un dictionaire de données sur les elements déjà calculés /// Reduit de façon drastique la combinatoire environ entre 10 et 100 fs moins de calcul /// </summary> /// <param name="tab"></param> /// <returns></returns> static bool ExisteDeja(int[] tab) { //string s=string.Empty; //foreach (int i in tab) s += i + "#"; //if (!Dic.ContainsKey(s)) //{ // Dic[s] = 1; // return false; //} if (tab.Length <= 3) { return(false); } Etat et = new Etat(tab); if (!Dic.ContainsKey(et)) { Dic[et] = 1; return(false); } return(true); }