public void AddTime(char[] arr) { if (Time > 23) { return; } char m1 = '\0', m2 = '\0'; for (var i = 0; i < arr.Length; i++) { if (arr[i] == First || arr[i] == Second) { continue; } if (m1 == '\0') { m1 = arr[i]; } else { m2 = arr[i]; } } Left = new TimeNode(m1, m2, _helper); Right = new TimeNode(m2, m1, _helper); }
private static int Mx(int A, int B, int C, int D, HashSet <string> hash) { if (A == B && B == C && C == D && A > 2) { return(0); } // 19 - is a maximum sum of all variables from which a valid time could be generated (e.g. 2,3,5,9) if (A + B + C + D > 19) { return(0); } char[] arr = new char[] { 'A', 'B', 'C', 'D' }; int i = 0, j = 0, n = arr.Length; var helper = new Helper(A, B, C, D); while (i < n) { if (arr[i] != arr[j]) { foreach (var pair in new Dictionary <char, char> { { arr[i], arr[j] }, { arr[j], arr[i] } }) { var tn = new TimeNode(pair.Key, pair.Value, helper); if (tn.Time < 24) { tn.AddTime(arr); } var clocks = tn.GenerateClocks(); if (clocks.Length > 0) { AddToHash(clocks, hash); } } } if (i + 1 == n) { break; } if (j + 1 == n) { j = 0; i++; } j++; } return(hash.Count); }