2468 안전 영역
0
안녕하세요 이제 막 알고리즘 시작한 코린이 입니다. 큰돌님 처음으로 질문 드려봅니다!!
dfs 문제에서 어디서 오류가 났는지를 못찾겠어서 도움 요청드려요..
그리고 꼭 여쭤보고 싶은게 ny랑 nx 또는 y와 x의 순서는 x y 가 아니라 왜 항상 y부터 먼저 사용하는 건가요?
그 부분이 조금 헷갈려서 여쭙고 싶어요 선생님.
#include <bits/stdc++.h>
using namespace std;
const int max_n = 104;
int n, ret, a[max_n][max_n], e[max_n][max_n], h = 1;
bool visited[max_n][max_n];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
void dfs(int y, int x) {
visited[y][x] = 1;
for (int i=0; i<4; ++i) {
int ny = y + dy[i];
int nx = x + dx[i];
if (ny < 0 || ny >= n || nx < 0 || nx >= n) continue;
if (e[ny][nx] == 0 && !visited[ny][nx]) dfs(ny, nx);
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
cin >> a[i][j];
}
}
while (h <= 100) {
fill(&visited[0][0], &visited[0][0] + max_n * max_n, 0);
int temp = 0;
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
if (e[i][j] == 1) continue;
if (a[i][j] <= h) e[i][j] = 1;
}
}
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
if (e[i][j] == 0 && !visited[i][j]) {
dfs(i, j);
++temp;
}
}
}
ret = max(ret, temp);
++h;
}
cout << ret << "\n";
return 0;
}
코테 준비 같이 해요!
C++
Answer 2
1-E질문입니다!
0
515
2
3-L 틀린 부분 피드백 부탁드립니다.
0
816
2
1-A문제 순열재귀함수 질문입니다.
0
380
1
1-A 일곱난쟁이문제입니다
0
454
1
문제 풀 때 방향성에 대해
0
797
1
맥에서 vs code로 실행 관련 질문입니다
0
520
1
17071번 메모리 초과
0
384
1
1-C질문입니다!
0
417
2
2-B BFS 시간초과질문
0
628
2
1-O 13번 라인
0
438
1
6-J 놀이공원 문제 질문
0
379
1
구현관련 질문
0
481
1
강의 교안
0
316
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
544
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
534
1
1-K
0
472
2
3-G번 질문있습니다.
1
471
3
3-C 실행 시간 질문드립니다.
0
491
1
4-A 문제 풀이 질문있습니다.
0
590
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
433
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
332
1
3-O go 함수 질문 드립니다.
1
443
2
4-A 출력 질문
0
301
1
1주차 1-O 질문드립니다
0
253
1

