java填充算法,關於Java中洪泛填充算法的問題

是正常的功能,以指定的參數替換任何字符bucketFill.fill (0, 0, '*', 'O');的顏色,我不知道會是什麼樣的顏色最初這些座標?

算法是否正確?我寫的,例如維基百科,但我的程序的結果如下:

@@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@ @@@@@

我想,一定是這樣的:

*@@@@

@@@@@

@@#@@

@@@@@

@@@@@

@@@##

@@@@@

我的代碼:

class BucketFill {

private char[][] pixels;

public BucketFill(char[][] pixels) {

this.pixels = pixels;

}

public void fill(int x, int y, char newColor, char oldColor) {

if (x < 0) return;

if (y < 0) return;

if (x >= pixels.length) return;

if (y >= pixels[x].length) return;

oldColor = pixels[x][y];

if (newColor == pixels[x][y]) return;

if (oldColor != pixels[x][y]) return;

pixels[x][y] = newColor;

fill(x - 1, y, newColor, oldColor);

fill(x + 1, y, newColor, oldColor);

fill(x, y - 1, newColor, oldColor);

fill(x, y + 1, newColor, oldColor);

}

public void inspect() {

for (int y = 0; y < pixels.length; y++) {

for (int x = 0; x < pixels[y].length; x++) {

System.out.print(pixels[y][x]);

}

System.out.print("\n");

}

}

public static void main(String argv[]) {

char pixels[][] =

{

{ 'O', 'X', 'X', 'X', 'X' },

{ 'X', 'O', 'O', 'O', 'X' },

{ 'X', 'O', '#', 'O', 'X' },

{ 'X', 'O', 'O', 'O', 'X' },

{ 'X', 'X', 'X', 'X', 'X' },

{ 'X', 'X', 'X', '#', '#' },

{ 'X', 'X', 'X', 'X', 'X' }

};

BucketFill bucketFill = new BucketFill(pixels);

bucketFill.fill(0, 0, '*', 'O');

bucketFill.fill(3, 0, 'O', 'O');

bucketFill.fill(2, 1, '@', 'O');

bucketFill.inspect();

}

}

2014-12-07

rel1x

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值