示例#1
0
        public int Count()
        {
            int        j      = 0;
            DataRecord output = new DataRecord();

            foreach (List <DataRecord> d in Data)
            {
                foreach (DataRecord dd in d)
                {
                    j++;
                    //Debug.WriteLine(dd.work + "   " + j);
                }
                //Debug.WriteLine("");
            }
            return(j);
        }
示例#2
0
        public DataRecord GetDataFromPosition(int i)
        {
            int        j      = 1;
            DataRecord output = new DataRecord();

            foreach (List <DataRecord> d in Data)
            {
                foreach (DataRecord dd in d)
                {
                    if (j == i)
                    {
                        output = dd;
                        goto aa;
                    }
                    j++;
                }
            }
aa:
            return(output);
        }
示例#3
0
        public string printlist(List <DataRecord> z)
        {
            DataRecord last = z.Last();
            string     aa   = "";

            aa += "{";
            Debug.Write("{");
            foreach (DataRecord a in z)
            {
                aa += a.work;
                Debug.Write(a.work);
                if (!a.work.Equals(last.work))
                {
                    Debug.Write(",");
                    aa += ",";
                }
            }
            aa += "}";
            Debug.Write("}");
            return(aa);
        }
示例#4
0
        public void PrintTree(DataRecord DR)
        {
            List <DataRecord> firstStack = new List <DataRecord>();

            firstStack.Add(DR);

            List <List <DataRecord> > childListStack = new List <List <DataRecord> >();

            childListStack.Add(firstStack);
            while (childListStack.Count > 0)
            {
                List <DataRecord> childStack = childListStack[childListStack.Count - 1];

                if (childStack.Count == 0)
                {
                    childListStack.RemoveAt(childListStack.Count - 1);
                }
                else
                {
                    DR = childStack[0];
                    childStack.RemoveAt(0);

                    string indent = "";
                    for (int i = 0; i < childListStack.Count - 1; i++)
                    {
                        indent += (childListStack[i].Count > 0) ? "|  " : "   ";
                    }

                    string a = indent + "+- " + DR.work + "(" + DR.time.ToString() + ")";
                    textBox1.AppendText(a);
                    textBox1.AppendText(Environment.NewLine);
                    if (DR.get_After().Count > 0)
                    {
                        childListStack.Add(new List <DataRecord>(DR.get_After()));
                    }
                }
            }
        }
        public void Combination(int ct)
        {
            List <List <DataRecord> > Resultlist = new List <List <DataRecord> >();
            int    counts = 0;
            double count  = Math.Pow(2, ListDR.Count);

            for (int i = 1; i <= count - 1; i++)
            {
                int sum = 0;

                List <DataRecord> result = new List <DataRecord>();
                string            str    = Convert.ToString(i, 2).PadLeft(ListDR.Count, '0');
                for (int j = 0; j < str.Length; j++)
                {
                    if (str[j] == '1')
                    {
                        sum += ListDR[j].time;
                        result.Add(ListDR[j]);
                    }
                }
                if (sum <= ct)
                {
                    Resultlist.Add(result);
                    foreach (DataRecord a in result)
                    {
                        //Debug.Write(a.work + ",");
                    }
                    counts++;
                    //Debug.Write("\t" + sum);
                    //Debug.WriteLine("");
                }
            }

            //find max member from Combinating
            int max_member = 0;

            foreach (List <DataRecord> a in Resultlist)
            {
                if (a.Count > max_member)
                {
                    max_member = a.Count;
                }
            }
            Debug.WriteLine("max member is " + max_member);
            //group by member of data
            List <List <List <DataRecord> > > Resultlist2 = new List <List <List <DataRecord> > >();
            List <List <DataRecord> >         buffer      = new List <List <DataRecord> >();

            for (int i = 1; i <= max_member; i++)
            {
                buffer = new List <List <DataRecord> >();
                foreach (List <DataRecord> a in Resultlist)
                {
                    if (a.Count == i)
                    {
                        buffer.Add(a);
                        Debug.WriteLine("a is " + a.Count);
                    }
                }
                Resultlist2.Add(buffer);
            }
            //test
            Debug.WriteLine("buffer is " + buffer.Count);
            Debug.WriteLine(" Resultlist2 is " + Resultlist2.Count);
            combine_text = ""; // clear combine_text



            this.Resultlist    = Resultlist2;
            this.ResultlistEx1 = Resultlist2;



            foreach (List <List <DataRecord> > aa in ResultlistEx1)
            {
                this.LastResult.Add(aa);
            }

            foreach (List <List <DataRecord> > aa in LastResult)
            {
                foreach (List <DataRecord> ldr in aa)
                {
                    combine_text += ("{");
                    Debug.Write("{");
                    DataRecord last = ldr.Last();
                    foreach (DataRecord dr in ldr)
                    {
                        Debug.Write(dr.work);
                        combine_text += (dr.work);
                        if (!dr.work.Equals(last.work))
                        {
                            combine_text += (",");
                        }
                    }
                    Debug.Write("}");
                    combine_text += ("}");
                }
                Debug.WriteLine("");
                combine_text += System.Environment.NewLine;
            }
        }
示例#6
0
 public void set_After(DataRecord after)
 {
     this.after.Add(after);
 }
示例#7
0
 public void set_Before(DataRecord before)
 {
     this.prev.Add(before);
 }