java—如何使用递归在2d数组中标记组

dbf7pr2w  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(278)

我需要在代码中编写一个方法,该方法可以获取二维数组并返回数组中有多少个不同的组。组被定义为“在上/下/左/右(非对角线)方向上直接连接到其他单元格的所有单元格”,其中数组中的单元格用星号表示。我需要编写一个遍历整个数组的方法,该方法还调用一个递归方法,该方法将每个星号更改为该组的唯一字母。例如,这是一个示例输入:

char image[][] = {
                {'*','*',' ',' ',' ',' ',' ',' ','*',' '},
                {' ','*',' ',' ',' ',' ',' ',' ','*',' '},
                {' ',' ',' ',' ',' ',' ','*','*',' ',' '},
                {' ','*',' ',' ','*','*','*',' ',' ',' '},
                {' ','*','*',' ','*',' ','*',' ','*',' '},
                {' ','*','*',' ','*','*','*','*','*','*'},
                {' ',' ',' ',' ',' ',' ',' ',' ','*',' '},
                {' ',' ',' ',' ',' ',' ',' ',' ','*',' '},
                {' ',' ',' ','*','*','*',' ',' ','*',' '},
                {' ',' ',' ',' ',' ','*',' ',' ','*',' '}
        };

输出是这样的:

aa      b 
 a      b 
      cc  
 d  ccc   
 dd c c c 
 dd cccccc
        c 
        c 
   eee  c 
     e  c

我主要需要迭代给定图像的方法的帮助,因为我不知道如何使代码区分组。

f0ofjuux

f0ofjuux1#

你的概念应该是这样的。

checkField (x, y, char)
  x,y is out of bounds; return;

  if current field has asterix do
     current field = char; // Prevents new checks!
     checkField (x+1, y, char); // right field
     checkField (x+-1,y, char); //l left field 
     // top and bottem field.
  else do
    // Advance to next Field; Next field has to be in bounds. At the end of the line you have to go to the next line;
    checkField( .., ..., char++)
end;

第一个电话是 checkField (0, 0 , 'a'); 你需要创建一个新的字符数组。这将是一个示例变量。
你可以把x,y矩阵建模为数组。其中x mod y是一条线。这将使进步更容易。但不够直观。
尝试实现伪代码,并随时详细更新您的问题。

相关问题