Pers.narod.ru. Алгоритмы. Раскраска карты или матрица смежности |
Страны на карте заданы матрицей смежности. Если страны i,j имеют на карте общую границу, то элемент матрицы A[i,j] равен 1, иначе 0. Смежные страны не должны иметь одинакового цвета. "Раскрасить" карту минимальным количеством цветов.
По сути дела, перед нами известная "задача о четырёх красках", доказывающая, что любую плоскую карту с произвольными границами областей можно раскрасить не более, чем четырьмя цветами. Если исключить всю интерфейсную работу, решение сведется к следующему коду обработки матрицы смежности A:
a[0][0]=1; mc=2; //max color Print (); //Метод для вызова печати матрицы for (i=1; i<n; i++) { for (k=1; k<mc; k++) { for (j=0; j<i; j++) { if ((j!=i) && (a[i][j]==1) && (a[j][j]==k)) goto next_k; } a[i][i]=k; goto next_i; next_k: } if (a[i][i]==0) { a[i][i]=mc; mc++; } next_i: Print (); }
Архив ZIP с файлами (16 Кб, запускать !start.bat, передающий программе файл данных с матрицей смежности)
гостевая; E-mail |