Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

청소 로봇이 그리드에서 청소할 수 있는 최대 셀 수를 알아내는 C++ 프로그램

<시간/>

그리드에서 작동하는 청소 로봇을 만들고 있다고 가정해 보겠습니다. 그리드의 치수는 h x w입니다. 정수 쌍 'dirt'의 배열에 제공되는 청소해야 하는 m개의 더티 셀이 있습니다. 특정 셀에 배치된 경우 청소 로봇; 특정 행과 열의 모든 셀을 정리할 수 있습니다. 따라서 우리의 임무는 최대한 많은 수의 더티 셀을 청소하는 것입니다. 카운트를 찾아 출력으로 표시해야 합니다.

따라서 입력이 h =3, w =3, m =3, 흙 ={{0, 0}, {1, 1}, {2, 1}}인 경우 출력은 3이 됩니다. 청소 로봇을 {1, 0} 셀에 배치하면 그리드의 모든 더러운 셀을 청소할 수 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

하나의 map 정의 두 개의 배열 hcount 및 wcount 크기 정의:100 및 0maxh =0, maxw =0, res =0으로 초기화 두 개의 배열 p, qfor initialize i :=0, i  

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include 네임스페이스 std;const int INF =1e9;int solve(int h, int w, int m, vector>dirt){ map, 정수> pairMap; 정수 hcount[100] ={0}, wcount[100] ={0}, 최대값 =0, 최대값 =0, 해상도 =0; 벡터p,q; for (int i =0; i > 흙 ={{0, 0}, {1, 1}, {2, 1}}; cout<<해결(h, w, m, 흙); 반환 0;}

입력

3, 3, 3, {{0, 0}, {1, 1}, {2, 1}}

출력

3