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); }