private void obliczToolStripMenuItem_Click(object sender, EventArgs e) { var DR = DTklienci.Select(); int Lp = 0; List <CDesc> Lst = new List <CDesc>(); foreach (var row in DR) { string sLP = row["Lp"].ToString(); string sNruslugi = row["numeruslugi"].ToString(); var DR2 = DTuslugi.Select("Lp = '" + sNruslugi + "'"); for (int i = 0; i <= DR2.Length - 2; i++) { var rec1 = DR2[i]; CDesc el1 = new CDesc(); el1.czasusl = double.Parse(rec1["czas trwania"].ToString()); el1.przerwa = double.Parse(rec1["minOdstep"].ToString()) * 8 * 60; el1.nazwisko = row["Dane Klienta"].ToString(); el1.usluga = rec1["Usluga"].ToString(); el1.nast = Lp + 1; Lst.Add(el1); Lp++; } var rec = DR2[DR2.Length - 1]; CDesc el = new CDesc(); el.czasusl = double.Parse(rec["czas trwania"].ToString()); el.przerwa = double.Parse(rec["minOdstep"].ToString()) * 8 * 60; el.nazwisko = row["Dane Klienta"].ToString(); el.usluga = rec["Usluga"].ToString(); el.nast = 0; Lst.Add(el); Lp++; } int [] pi = new int[Lp + 2]; for (int i = 0; i <= Lp; i++) { pi[i] = i; } pi[0] = pi[Lp + 1] = 0; //pi[3] = 2; //pi[2] = 3; List <cp>[] Nast = new List <cp> [Lp + 2]; List <cp>[] Pop = new List <cp> [Lp + 2]; et :; createGraph(Lp, Lst, pi, out Nast, out Pop); int[] C = new int[Lp + 1]; int[] S = new int[Lp + 1]; int res = harm(Lp, Lst, Pop, Nast, C, S); int Cmax0 = cmax(Lp, C); int bps = 0; int bCmax = 1000000; for (int ps = 1; ps < Lp - 1; ps++) { int sw = pi[ps]; pi[ps] = pi[ps + 1]; pi[ps + 1] = sw; createGraph(Lp, Lst, pi, out Nast, out Pop); if (harm(Lp, Lst, Pop, Nast, C, S) == 1) { int Cmax = cmax(Lp, C); if (Cmax < bCmax) { bCmax = Cmax; bps = ps; } } sw = pi[ps]; pi[ps] = pi[ps + 1]; pi[ps + 1] = sw; } if (bCmax < Cmax0) { int sw = pi[bps]; pi[bps] = pi[bps + 1]; pi[bps + 1] = sw; goto et; } //----------dotąd na zajęciach createGraph(Lp, Lst, pi, out Nast, out Pop); harm(Lp, Lst, Pop, Nast, C, S); genHarm(pi, Lst, C); }
public Summon(Node Summon, Server.Server server) { if (Summon.child.Count < 3) { return; } this.server = server; var raw_data = Summon["raw_data"]; var baseInfo = raw_data["base"].Data.Replace(' ', '#'); Rank = HttpUtil.GetElement(baseInfo, "等级#", "#"); 成长率 = Convert.ToDouble(HttpUtil.GetElement(baseInfo, "成长率#", "#")); Name = raw_data["name"].Data; CDesc = Summon["cDesc"].Data; 变色 = CDesc.Contains("变色"); var skillInfo = raw_data["skill"].Data.Replace(";", "#r"); HaveSpecialSkill = !skillInfo.Contains("未觉醒"); var skillRaw = HttpUtil.GetAllElements(skillInfo, "技能", "#r"); if (skillInfo.Contains("技能修炼")) { 修炼 = true; var tmp = HttpUtil.GetElement(skillInfo, "修炼(", ")"); 修炼参数1 = HttpUtil.GetElementLeft(tmp, "/"); 修炼参数2 = tmp.Substring(修炼参数1.Length + 1); } if (skillInfo.Contains("神兽技能格")) { 神兽 = true; } Skills = new List <Skill>(); foreach (var skill in skillRaw) { var thisSkill = new Skill(skill); if (thisSkill.Valid) { Skills.Add(thisSkill); } } if (CDesc.Contains("饰品")) { 饰品品质 = HttpUtil.GetElement(CDesc, "品质:", "#"); } else { 饰品品质 = "-1"; } foreach (var rankRule in InvalidRankRule) { if (Rank.Contains(rankRule.Key)) { return; } } if (InvalidNameRule.ContainsKey(Name)) { return; } foreach (var cDesRule in InvalidcDesRule) { if (CDesc.Contains(cDesRule.Key)) { return; } } valid = true; }