섬 문제 간단한 해법
12980 단어 데이터 구조와 알고리즘
$strIsland = <<<STR
1 1 1 1 0
1 1 0 1 0
1 1 0 0 1
0 0 0 1 0
STR;
$graph = [];
$lines = explode(PHP_EOL, $strIsland);
$row = 0;
foreach( $lines as $line )
{
$items = explode( ' ', $line );
$graph[$row] = [];
foreach( $items as $item )
{
$graph[$row][] = $item;
}
$row++;
}
print_graph($graph);
$color = 0;
foreach( $graph as $row_index => $rows )
{
foreach( $rows as $column_index => $item )
{
if( isset($graph[$row_index][$column_index]) && 1 == $graph[$row_index][$column_index] )
{
$color++;
}
erase2Zero($graph, $row_index, $column_index );
}
}
function erase2Zero(&$graph, $row_index, $column_index)
{
if( !isset( $graph[$row_index][$column_index] ) )
{
return;
}
if( $graph[$row_index][$column_index] == 0 )
{
return;
}
if( $graph[$row_index][$column_index] == 1 )
{
$graph[$row_index][$column_index] = 0;
}
erase2Zero( $graph, $row_index, $column_index - 1 );
erase2Zero( $graph, $row_index, $column_index + 1 );
erase2Zero( $graph, $row_index - 1, $column_index );
erase2Zero( $graph, $row_index + 1, $column_index );
}
echo PHP_EOL;
echo PHP_EOL;
print_graph($graph);
echo 'island count: ', $color, PHP_EOL;
function print_graph($arr)
{
foreach( $arr as $line )
{
foreach( $line as $item )
{
echo $item, ' ';
}
echo PHP_EOL;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 갈래 나무의 깊이가 두루 다니다텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.