Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Вопрос по поиску соседей


Автор: Binjospookie 11.11.2013, 20:42
Есть массив a[i][j]. Он выводится в виде:
10111
10110
11101
01011
11010

Необходимо узнать сколько для каждого элемента (клетки) существует соседних клеток, отвечающих условию N.
При этом не должно быть много кода:(
Как это сделать,а?

Автор: Magistrus 12.11.2013, 11:14
Как то так. Код еще можно немного сократить объеденив граничные условия.
Код


public class Neighborhood
{
    public final static int N = 2;
    
    public static void main(String[] args)
    {
        int [][] array  = new int[][]
           {{1,0,1,1,1},
            {1,0,1,1,0},
            {1,1,1,0,1},
            {0,1,0,1,1},
            {1,1,0,1,0}};
        int tableSize = 4;
        for (int i=0; i < tableSize; i++)
        {
            for (int j=0; j < tableSize; j++)
            {
                int neighborhoodCount = 0; 
                if (i>0 && array[i-1][j]==1)
                {
                    neighborhoodCount++;
                }
                if (i<tableSize && array[i+1][j]==1)
                {
                    neighborhoodCount++;
                }
                if (j>0 && array[i][j-1]==1)
                {
                    neighborhoodCount++;
                }
                if (j<tableSize && array[i][j+1]==1)
                {
                    neighborhoodCount++;
                }
                if (i>0 && j>0 && array[i-1][j-1]==1)
                {
                    neighborhoodCount++;
                }
                if (i<tableSize && j>0 && array[i+1][j-1]==1)
                {
                    neighborhoodCount++;
                }
                if (i>0 && j<tableSize && array[i-1][j+1]==1)
                {
                    neighborhoodCount++;
                }
                if (i<tableSize && j<tableSize && array[i+1][j+1]==1)
                {
                    neighborhoodCount++;
                }
                if (neighborhoodCount == N)
                {
                    System.out.println(String.format("i=%d j=%d", i,j));
                }
                System.out.println(String.format("[%d][%d] %d", i,j, neighborhoodCount)); 
            }
        }
    }
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)