public string[] layDanhSachDinhThu(int colThu, int row)
 {
     string[] mangDinh = new string[rowsMangDoc - 4];
     for (int i = 4; i < rowsMangDoc; i++)
     {
         string dinh = mangDoc[i, 1];
         string ca   = mangDoc[i, colThu];
         string ca2  = mangDoc[i, colThu + 1];
         if (ca.Contains("x"))
         {
             dinh += " Ca1";
         }
         if (ca2.Contains("x"))
         {
             dinh += " Ca2";
         }
         mangDinh[i - 4] = dinh;
     }
     return(mangDinh);
 }
        public Dinh[] toMauDoThi(int cols, int rows)
        {
            ganDothi1(taoDoThiThu(cols), rowsMangDoc - rows);
            //Buoc 1: Khoi tao mang 1 chieu chua dinh,bac va cau truc Dinh
            Dinh[] d     = new Dinh[doThi.n];
            int[]  dsbac = new int[doThi.n];
            //string []dsdinh = layDanhSachDinh(cols);
            string[] dsdinh   = layDanhSachDinhThu(cols, rows);
            int[]    dsdinhAo = new int[doThi.n];

            for (int i = 0; i < doThi.n; i++)
            {
                dsdinhAo[i] = i;
            }

            //Buoc 2:tinh bac tung dinh luu vao dsbac va them tung dinh vao dsdinh
            for (int i = 0; i < doThi.n; i++)
            {
                dsbac[i] = tinhBacDoThi1(i);
            }

            //Buoc 3:sap xep danh sach bac giam dan
            for (int i = 0; i < doThi.n - 1; i++)
            {
                for (int j = i + 1; j < doThi.n; j++)
                {
                    if (dsbac[i] < dsbac[j])
                    {
                        swap(dsbac, i, j);
                        swapString(dsdinh, i, j);
                        swap(dsdinhAo, i, j);
                    }
                }
            }

            //Buoc 4:Gan bac cua dsbac vao cau Dinh(bac),Mau cua tung dinh la 0, va dinh vao v
            for (int i = 0; i < doThi.n; i++)
            {
                d[i].bac = dsbac[i];
                d[i].mau = 0;
                d[i].v   = dsdinhAo[i];
                d[i].ten = dsdinh[i];
            }

            //Buoc 5:Khoi tao mau dau tien la 1,mang 1 chieu tapdinhto, va bien dem = 0
            int mau_to = 1;

            int[] tap_dinh_to = new int[max];
            int   n;
            int   dem = 0;

            while (dem < doThi.n)
            {
                int i = 0;
                n = 0;
                while (d[i].mau != 0)
                {
                    i++;
                }
                d[i].mau = mau_to;
                dem++;
                tap_dinh_to[n] = d[i].v;

                for (int j = 0; j < doThi.n; j++)
                {
                    if (d[j].mau == 0)
                    {
                        int k;
                        for (k = 0; k <= n; k++)
                        {
                            if (doThi.a[d[j].v, tap_dinh_to[k]] != 0)
                            {
                                break;
                            }
                        }
                        if (k > n)
                        {
                            d[j].mau = mau_to;
                            dem++;
                            n++;
                            tap_dinh_to[n] = d[j].v;
                        }
                    }
                }
                mau_to++;
            }
            mau = mau_to - 1;

            for (int i = 0; i < doThi.n - 1; i++)
            {
                for (int j = i + 1; j < doThi.n; j++)
                {
                    string   ai          = "";
                    string   aj          = "";
                    string   ai1         = "";
                    string   aj1         = "";
                    string[] arChar      = { "Ca" };
                    string[] arrListStr  = d[i].ten.Split(arChar, StringSplitOptions.None);
                    string[] arrListStr1 = d[j].ten.Split(arChar, StringSplitOptions.None);
                    try
                    {
                        ai = arrListStr[1];
                    }
                    catch
                    {
                        ai = "";
                    }
                    try
                    {
                        aj = arrListStr[2];
                    }
                    catch
                    {
                        aj = "";
                    }
                    try
                    {
                        ai1 = arrListStr1[1];
                    }
                    catch
                    {
                        ai1 = "";
                    }
                    try
                    {
                        aj1 = arrListStr1[2];
                    }
                    catch
                    {
                        aj1 = "";
                    }

                    string length1 = ai + aj;
                    string length2 = ai1 + aj1;
                    if (length1.Length > length2.Length && d[i].mau < d[j].mau)
                    {
                        int maua = d[i].mau;
                        int maub = d[j].mau;
                        for (int m = 0; m < doThi.n; m++)
                        {
                            if (d[m].mau == maua)
                            {
                                d[m].mau = maub;
                            }
                            else
                            if (d[m].mau == maub)
                            {
                                d[m].mau = maua;
                            }
                        }
                    }
                }
            }
            return(d);
        }