一共有九种颜色,初始化有11个国家,所以相邻国家势必有颜色冲突的可能性(因为随着游戏进程国家有消失或新增的可能,因此不能写死),为此需要设计一种着色算法,因为游戏中的国家数量不会特别多,所以性能不是考虑的首要因素,因此采取贪心策略,最终算法时间复杂度为 O ( n 2 ) O(n^2) O(n2)。
初始的游戏地图:
将其抽象成无向图,存储国家间的邻近关系,如下:
(国家序号从0到10:燕、晋、秦、周、郑、楚、吴、越、宋、鲁、齐)
燕 - 齐(0-10) 燕 - 晋(0-1)
晋 - 秦(1-2) 晋 - 齐(1-10) 晋 - 周(1-3) 晋 - 郑(1-4) 晋 - 宋(1-8)晋 - 鲁(1-9)
秦 - 周(2-3) 秦 - 楚(2-5)
周 - 楚(3-5) 周 - 郑(3-4)
郑 - 宋(4-8) 郑 - 楚(4-5) 郑 - 鲁(4-9)
宋 - 鲁(8-9) 宋 - 楚(8-5) 宋 - 吴(8-6)
楚 - 吴(5-6) 楚 - 越(5-7)
鲁 - 吴(9-6) 鲁 - 齐(9-10)
越 - 吴(7-6)
在Start()里面需要把这些关系建立好
无向图定义:
public class stateGraph
{
public int[][] Graph;
private int stateCount;
float[][] color = new float[9][];
public stateGraph(int count)
{
stateCount = count;
Graph = new int[count][];
for (int i = 0; i < count; i++) Graph[i] = new int[count];
}
//设置邻接关系
public