일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백준
- 계획
- 다이나믹프로그래밍
- mmcv
- 2024
- 공부
- dp
- 2021
- 강좌
- dynamic programming
- python 강의
- 프로그래밍
- python 강좌
- python
- 슬픔
- 인생
- 철학
- 파이썬 강의
- 파이썬
- 자작시
- 자살
- 2020
- C++
- mmdetection
- 강의
- 파이썬 강좌
- 알고리즘
- it
- BOJ
- 라즈베리파이 모니터
- Today
- Total
목록
BFS
(2)
반응형
Stargazer
접근: 대충 봐도 탐색 문제이고, 맵 전체를 탐색 해야 하기 때문에 BFS로 탐색하기로 결정함 전략: 우선 시작점은 (0,0)으로 하고, 건물 외벽부터 시작이므로 맵의 변을 2씩 증가시켜서, 패딩을 주어 갈수 있는 경로를 만들면 뚫려있는 곳이나 열쇠를 가지고 있는 문은 통과가 가능하다. 그 다음 주어진 키에 맞게 먼저 전체 탐색을 BFS로 진행하고, 그 중에 발견된 키(중복 포함)가 있으면, 다시 한번 전체 탐색을 한다. 더 이상 새로운 키가 발견되지 않을 때까지 반복해서 전체 탐색을 진행 한다. 그 과정에서 발견된 문서는 합계하여 출력한다. 코드: #include #include using namespace std; int test; char map[102][102]; bool visit[102][10..
접근: 최소 길이를 찾는 문제이기 때문에 BFS로 접근한다. 전략: D,S,L,R 의 연산 과정과 현재 숫자를 큐에 넣고, 한번 씩 돌린다. 이때 이전 상태를 반복하지 않기 위해서 visit 한 상태를 저장하는 배열을 만들어 사용한다. 코드: #include #include using namespace std; //DSLR int t; bool visit[10001]; void bfs(int a , int b){ queue q; q.push({a,""}); for(auto& a : visit){ a = false; } while(!q.empty()){ auto cur = q.front(); q.pop(); if(cur.first == b){ cout t; for(int test=0;test> a >> b..