java周长公式_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

这就是一个最基本的染色算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值