コード例 #1
0
        public void Solve(string filename)
        {
            _agirlikLimiti = ReadInput(filename);

            YedekCozum candidate = new YedekCozum(_items, -1, null);
            YedekCozum best      = candidate;

            OncelikSirasi <int, YedekCozum> queue = new OncelikSirasi <int, YedekCozum>();

            queue.Add(candidate, ComputeBounds(candidate, ref best));

            while (queue.Count > 0 && queue.YuksekOncelik >= best.Deger)
            {
                YedekCozum root = queue.RemoveYuksekOncelik();
                int        k    = root.Index + 1;

                for (int j = k; j < _items.Count; j++)
                {
                    YedekCozum child = new YedekCozum(_items, j, root);

                    if (child.Agirlik <= _agirlikLimiti)
                    {
                        int childBounds = ComputeBounds(child, ref best);

                        if (childBounds > best.Deger)
                        {
                            queue.Add(child, childBounds);
                        }
                    }
                }
            }

            _toplamDeger   = best.Deger;
            _toplamAgirlik = best.Agirlik;

            while (best.Onceki != null)
            {
                SirtCantasiEsyasi tmp = _items[best.Index];

                tmp.SelectionText  = "X";
                _items[best.Index] = tmp;
                best = best.Onceki;
            }
        }
コード例 #2
0
        public int ReadInput(string filename)
        {
            int bound;
            List <SirtCantasiEsyasi> tmpList = new List <SirtCantasiEsyasi>();

            using (StreamReader sr = new StreamReader(filename))
            {
                Int32.TryParse(sr.ReadLine(), out bound);

                while (!sr.EndOfStream)
                {
                    string[]          pieces  = sr.ReadLine().Split(',');
                    SirtCantasiEsyasi newItem = new SirtCantasiEsyasi(Convert.ToInt32(pieces[0]), Convert.ToInt32(pieces[1]), Convert.ToInt32(pieces[2]));
                    tmpList.Add(newItem);
                }

                tmpList.Sort();
            }

            _items = tmpList;
            return(bound);
        }