📄 mapcolour.cpp
字号:
#include <stdio.h>
void mapcolor(int R[7][7], int n, int *s)
{ s[1]=1; // 1号区域染1色
int a=2, J=1; // a为区域号,J为染色号
while ( a<=n)
{
while(( J<=4)&&(a<=n))
{
int k=1; // k表示已经着色的区域号
while(( k<a) && ( s[k] * R[a-1][k-1] != J)) k=k+1; // 若不相邻,或若相邻且不重色,对下一个区域判断
if (k<a) J=J+1; //相邻且重色
else{ s[a]=J; a=a+1; J=1; }//相邻且不重色
};
if ( J > 4 ) { a=a-1; J=s[a]+1 ; };
}
}
void main()
{
int s[8]={0};
int n =7;
int matrix[7][7] = {0, 1, 1, 1, 1, 1, 0,
1, 0, 0, 0, 0, 1, 0,
1, 0, 0, 1, 1, 0, 0,
1, 0, 1, 0, 1, 1, 0,
1, 0, 1, 1, 0, 1, 0,
1, 1, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0};
mapcolor(matrix, n, s);
for(int a =1; a <= n; a++)
{
printf("%d, ", s[a]);
};
printf("\n ");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -