CLEANER 질문입니다 빛나는별 어떤 과학의 인공지능 청소기 위의 문제를 풀고 있는데 계속 오답이 뜨네요 ㅠㅠ 오답이 뜨는 이유를 혼자 아무리 고민해도 못 찾겠어서 이렇게 질문글 올립니다 ㅜㅜ #include <stdio.h> const int MAX_SIZE = 8; int N , M; int dir[4][2] = {-1 , 0 , 0 , 1 , 1 , 0 , 0 , -1}; int iTime[MAX_SIZE * MAX_SIZE][2]; int pos[MAX_SIZE][MAX_SIZE]; int endTime; int solve(int y , int x , int t) { if(y == N && x == M) return t == endTime; int ret = 0; if(pos[y][x] == -1 || pos[y][x] == t) { int prev = pos[y][x]; pos[y][x] = -2; if(!iTime[t][0] || (iTime[t][0] == y && iTime[t][1] == x)) { for(int i = 0;i < 4;i++) { int ny = y + dir[i][0]; int nx = x + dir[i][1]; if(pos[ny][nx] != -2) ret += solve(ny , nx , t + 1); } } pos[y][x] = prev; } return ret; } int main(void) { int T; for(scanf("%d" , &T);T--;) { scanf("%d %d" , &N , &M); endTime = N * M - 1; for(int i = 0;i <= endTime;i++) iTime[i][0] = iTime[i][1] = 0; for(int i = 1;i <= N;i++) { pos[i][0] = pos[i][M + 1] = -2; for(int j = 1;j <= M;j++) { scanf("%d" , &pos[i][j]); int t = pos[i][j]; if(t != -1) iTime[t][0] = i , iTime[t][1] = j; } } for(int i = 1;i <= M;i++) pos[0][i] = pos[N + 1][i] = -2; printf("%d\n" , !(N & 1) && !(M & 1) ? 0 : solve(1 , 1 , 0)); } return 0; } 11년 전
2개의 댓글이 있습니다. astein 마지막 줄 마지막 칸의 숫자가 N * M - 1 이라는 조건을 만족하지 않는 데이터가 일부 있었네요. 데이터 수정하고 재채점 하였습니다. 제보 감사합니다 :) 11년 전 link 빛나는별 앗 문제의 오류였군요 ㅜㅜ 감사합니다 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
빛나는별
어떤 과학의 인공지능 청소기
위의 문제를 풀고 있는데 계속 오답이 뜨네요 ㅠㅠ
오답이 뜨는 이유를 혼자 아무리 고민해도 못 찾겠어서 이렇게 질문글 올립니다 ㅜㅜ
11년 전