周长公式"/>
java周长公式
展开全部
我们可以把这个问题转换成一个染色问题,把不同的黑色图形染62616964757a686964616fe78988e69d8331333337373632成不同的颜色。
假设我们已经把图形读进了二维数组int[][] map,白色为0,黑色为1,我们再假设一些其他颜色,比如红色2,蓝色3,黄色4等等。tarColor初始化为1
再构造一个ArrayList al来存放点的坐标,初始为空的。
下面开始染色:for(map中的每一个点) {
if(该点是黑色){
tarColor++;
al.add(这个点);
}
while(al不空) {
取出al中的一个点并从al中删除;
将这个点染成tarColor;
if(这个点的上一个点是黑色) al.add(上一个点);
if(这个点的下一个点是黑色) al.add(下一个点);
if(这个点的左一个点是黑色) al.add(左一个点);
if(这个点的右一个点是黑色) al.add(右一个点);
//这里注意下标不要越界。这里是四向连通,要是八向连通就再判断左上左下右上右下几个点
}
}
这样我们就把这个图中的黑色块染成了不同的颜色,再对每个颜色算周长你应该就会了
此时图中的颜色有0,2~tarColor
你的例子中黑色就被分别染成了2,3,4
这就是一个最基本的染色算法
更多推荐
java周长公式
发布评论