public bool AddUniqueResult(Results2 res)
        {
            int rCount = res.Count;

            if (rCount <= 0)
            {
                return false;
            }
            int nRes = ResultSet.Count;
            for (int i = nRes - 1; i >= 0; --i)
            {
                int rsCount = ResultSet[i].Count;

                if (rsCount < rCount || res.Equals(ResultSet[i]))
                {
                    return false;
                }
                else if (rCount < rsCount)
                {
                    ResultSet.RemoveAt(i);
                }
            }

            if (rCount < BestSetSize)
            {
                BestSetSize = rCount;
            }

            ResultSet.Add(res);
            return true;
        }
 public Results2 Clone()
 {
     Results2 ret = new Results2();
     int len = this.count;
     for (int i = 0; i < len; i++)
     {
         ret.lins[i] = this.lins[i];
     }
     ret.count = this.count;
     ret.values = this.values;
     return ret;
 }
        public void TestResultSet()
        {
            List<MyPoint> set1 = new List<MyPoint>();
            set1.Add(new MyPoint(0, 0));
            set1.Add(new MyPoint(1, 1));
            set1.Add(new MyPoint(2, 2));
            set1.Add(new MyPoint(5, 0));
            set1.Add(new MyPoint(6, 1));
            set1.Add(new MyPoint(7, 2));

            ItemSet iSet1 = new ItemSet();
            ItemSet iSet2 = new ItemSet();

            iSet1.Add(0);
            iSet1.Add(2);
            iSet1.Add(4);

            iSet2.Add(1);
            iSet2.Add(3);
            iSet2.Add(5);

            Results2 r2 = new Results2();
            r2.AddResult(iSet1.GetIndices());

            Results2 r3 = r2.Clone();
            r3.AddResult(iSet2.GetIndices());

            Assert.AreEqual(2, r3.Count);
            Assert.AreEqual(1, r2.Count);

            ItemSet iSet3 = iSet1.Clone();
            iSet3.Add(1);
            iSet3.Add(3);
            iSet3.Add(5);

            Assert.AreEqual(3, iSet1.Count);
            Assert.AreEqual(6, iSet3.Count);
        }
        public bool Equals(Results2 other)
        {
            //return this.count == other.count && this.values == other.values;
            int len = this.count;
            int oLen = other.count;
            if (len != oLen)
            {
                return false;
            }

            for (int i = 0; i < len; i++)
            {
                if (lins[i] != other.lins[i])
                {
                    return false;
                }
            }
            return true;
        }