회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
2
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
틀린이유를 모르겠습니다
1103번 - 게임
sunnythek
4년 전
0
코드 구현은 적당히 한거같은데 어느부분에서 오류가생겨서 틀리는지 모르겟습니다
#include<iostream> #include<algorithm> using namespace std; //BFS로 풀어두됨 const int Max = 50; int map[Max][Max] = {}; bool check[Max][Max]= {}; //앞에서부터 세로 가로 위치 그다음은 방향이다 여기를 들려서 어디방향으로 갔 int movecount[Max][Max] = {}; int N, M; int max_move = 0; void input() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { char a; cin >> a; if (a != 'H') { map[i][j] = a - '0'; //숫자로 바꿔주기위해서 } else map[i][j] = 0; //H일 경우에는 0을 넣어줌 } } } int move_coin(int y, int x, int cnt) { if (max_move == -1) return -1; if (map[y][x] == 0 || y < 0 || y >= N || x < 0 || x >= M) { //범위를 벗어나거나 0이되는경우 //max_move = max(max_move, cnt); //많이 움직인거를 확인하고 return 1; //한번만 이동할수 있으니 1 반환 } if (check[y][x] == true ) { //이경우가 루프로인해서 그냥종료되는경우 max_move = -1; return -1; } else if( movecount[y][x] == 0) { //이동값이 안정해져 있을 경우 처음으로 들린곳이기 떄문에 당연히 check는false이고 check[y][x] = true; //들린곳으로 바꿈 int move[4] = {}; move[0] = move_coin(y + map[y][x], x, cnt + 1); move[1] = move_coin(y - map[y][x], x, cnt + 1); move[2] = move_coin(y, x + map[y][x], cnt + 1); move[3] = move_coin(y, x - map[y][x], cnt + 1); sort(move, move + 4); check[y][x] = false; for (int i = 0; i < 4; i++) { if (move[i] == -1) return -1; } movecount[y][x] = move[3]; return move[3]+1; } else { //이경우는 해당칸에 값이 있는경우 return movecount[y][x] + 1; //그칸에서 한번더 이동한 값을 리턴함 } } int main() { cin >> N >> M; input(); if (move_coin(0, 0, 0) == -1) { cout << -1; } else cout << movecount[0][0]; move_coin(0,0,0); cout << move_coin(0, 0, 0); return 0; }
댓글을 작성하려면
로그인
해야 합니다.
sunnythek 4년 전
코드 구현은 적당히 한거같은데 어느부분에서 오류가생겨서 틀리는지 모르겟습니다