> 백엔드 개발 > C++ > 본문

행렬에서 연결된 비어 있지 않은 셀 수를 업데이트하는 쿼리

PHPz
풀어 주다: 2023-09-10 09:01:02
앞으로
1082명이 탐색했습니다.

행렬에서 연결된 비어 있지 않은 셀 수를 업데이트하는 쿼리

행렬은 행과 열로 구성된 셀의 모음으로 생각할 수 있습니다. 각 셀에는 비어 있거나 비어 있지 않은 값이 포함될 수 있습니다. 컴퓨터 프로그래밍에서 행렬은 데이터를 2차원 그리드로 표현하는 데 자주 사용됩니다.

이 기사에서는 행렬에 대한 가능한 업데이트를 고려하여 행렬에서 비어 있지 않은 연결된 셀 수를 효율적으로 계산하는 방법에 대해 설명합니다. 이 문제를 해결하는 다양한 방법을 살펴보고 구현을 시연하기 위한 실제 코드 예제를 제공합니다.

문법

행렬에서 연결된 비어 있지 않은 셀 수를 쿼리하고 C/C++를 사용하여 업데이트하는 기본 구문은 다음과 같이 정의할 수 있습니다. -

으아아아

행렬이 입력 "matrix"인 경우 "rows" 및 "cols"는 각각 행렬의 행과 열 수를 나타냅니다. "queryCount" 함수는 행렬에서 연결된 비어 있지 않은 셀의 수를 나타내는 정수 값을 반환합니다.

알고리즘

이 문제를 해결하기 위해 다음 알고리즘을 따를 수 있습니다. -

1단계 - 변수 "count"를 0으로 초기화하면 연결된 비어 있지 않은 셀의 개수가 저장됩니다.

2단계 - 행렬의 각 셀을 반복합니다.

3단계 - 각 셀에 대해 비어 있지 않은지(즉, null이 아닌 값이 포함되어 있는지) 확인하세요.

4단계 - 셀이 비어 있지 않으면 개수를 1씩 늘립니다.

5단계 - 셀에 비어 있지 않은 인접 셀이 있는지 확인하세요.

6단계 - 인접한 셀이 비어 있지 않으면 "count"를 1만큼 늘립니다.

7단계 - 인접한 모든 셀에 대해 5~6단계를 반복합니다.

8단계 - 8: 행렬의 모든 셀을 반복한 후 "count"를 최종 결과로 반환합니다.

방법

  • 방법 1 - 이 문제를 해결하는 일반적인 방법은 깊이 우선 검색(DFS) 알고리즘을 사용하는 것입니다

  • 방법 2 - 업데이트된 행렬에서 연결이 있는 비어 있지 않은 셀의 개수를 찾기 위한 쿼리를 구현하는 또 다른 방법은 BFS(Breadth-First Search) 알고리즘을 사용하는 것입니다.

방법 1

이 접근 방식에서 DFS 알고리즘은 행렬을 재귀적으로 탐색하고 방문한 셀을 추적하여 이중 계산을 방지합니다.

예 1

이 방법은 2차원 행렬에 대해 깊이 우선 검색을 수행합니다. 행렬의 차원, 셀 값, 쿼리 수는 무작위로 결정됩니다. countConnectedCells 서브루틴은 DFS를 수행하고 지정된 행과 열에 있는 셀부터 시작하여 연결된 null이 아닌 셀의 개수를 반환합니다. updateCell 함수는 행렬의 셀 값을 업데이트합니다. 주요 함수는 현재 시간을 사용하여 임의의 시드를 시작한 다음 임의의 행렬 크기와 요소를 생성한 다음 임의의 수의 쿼리를 생성합니다. 각 쿼리에 대해 코드는 개수 쿼리(1) 또는 업데이트 쿼리(2)를 무작위로 선택하고 적절한 작업을 수행합니다. 쿼리 유형이 1이면 countConnectedCells 함수가 호출되어 연결된 비어 있지 않은 셀의 수를 확인하고 결과를 인쇄합니다. 쿼리 유형이 2인 경우 updateCell 함수를 호출하여 지정된 셀의 값을 조정합니다.

으아아아

출력

으아아아

방법 2

이 접근 방식에서 BFS(Breadth First Search)는 행렬에서 연결되어 있고 비어 있지 않은 셀의 수를 찾는 데 사용할 수 있는 또 다른 그래프 순회 알고리즘입니다. BFS에서는 주어진 셀에서 시작하여 너비 우선 방식(즉, 레이어별로)으로 모든 인접 셀을 탐색합니다. 우리는 대기열을 사용하여 액세스 중인 셀을 추적하고 액세스된 셀을 표시하여 여러 카운트를 방지합니다.

예 2

이 코드는 2차원 행렬에서 너비우선탐색 알고리즘을 수행하는 소프트웨어를 구성합니다. 행렬의 차원, 셀 값, 쿼리 개수는 임의로 생성됩니다. 코드에는 두 개의 서브루틴이 포함되어 있습니다. 하나는 BFS를 수행하고 다른 하나는 매트릭스 내의 셀을 조정합니다.

BFS 작업은 무작위로 선택된 셀부터 시작하여 인접한 셀을 검사하여 서로 연결되어 있고 비어 있는지 확인합니다. 그렇다면 대기열에 추가되어 비슷한 방식으로 처리됩니다. 행렬 내의 셀 업데이트에는 해당 값만 변경됩니다. 행렬과 쿼리 번호를 생성한 후 코드는 BFS 쿼리 또는 업데이트 쿼리를 무작위로 선택하여 적절한 작업을 수행합니다. BFS 쿼리의 결과는 선택한 셀부터 시작하여 상호 연결된 비어 있는 셀의 개수입니다.

코드

으아아아

출력

으아아아

결론

이 기사에서는 행렬에서 연결된 비어 있지 않은 셀의 수를 찾고 C/C++를 사용하여 업데이트하는 두 가지 방법에 대해 논의했습니다. 깊이 우선 탐색(DFS) 알고리즘 및 합집합 검색(소분할 집합의 합집합) 특정 사용 사례에 가장 적합한 방법을 선택하기 전에 각 방법의 시간 복잡도와 공간 복잡도를 분석하는 것이 중요합니다.

위 내용은 행렬에서 연결된 비어 있지 않은 셀 수를 업데이트하는 쿼리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!