작성
·
335
0
안녕하세요, 큰돌님
17837을 풀던중 문제 예제 입력 5에서 답이 나오지 않습니다.
반례를 다 찾았다고 생각했는데, 대체 왜 안되는지 궁금합니다...
답변 4
0
죄송합니다..
저렇게 디버깅 할 생각을 못 했네요
로직 고치고 맞췄습니다!
항상 답글 달아 주시는 것 감사합니다!
https://www.acmicpc.net/source/72431720
0
혹시 디버깅코드 넣어서 벡터내의 있는 말들이 잘 움직이나 테스팅해보셨나요?
ex5의 경우.
이거 정상적인 코드는
START
0 1 0 1 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 0 2 0 2 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 2 0 1
0 0 0 0 0 0
0 2 0 0 0 0
1 0 0 0 0 1
START
0 1 0 0 0 0
1 0 1 0 0 1
0 0 1 1 0 0
0 1 0 0 0 0
0 0 1 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 1
1 0 0 0 0 0
0 2 1 0 0 0
0 0 0 1 0 0
0 1 0 0 0 0
1 0 0 0 0 1
START
0 1 0 0 0 0
1 0 0 0 0 1
0 0 0 1 0 0
1 1 1 0 0 0
0 0 1 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 1
0 1 0 0 0 0
0 3 0 0 0 0
1 0 0 0 0 1
7
다음과 같이 움직입니다.
근데 동훈님 코드는 다음과 같이 움직입니다.
START
0 1 0 1 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 0 2 0 2 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 1
0 0 2 0 0 0
0 0 0 0 0 0
1 0 2 0 0 1
START
0 1 0 0 0 0
1 0 0 0 0 1
0 0 0 1 0 0
1 1 2 0 0 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 1
1 0 1 0 0 0
0 0 1 0 0 0
0 2 0 1 0 0
0 0 0 0 0 0
1 0 0 0 0 1
START
0 1 0 0 0 0
1 0 0 0 0 1
0 0 2 1 0 0
0 0 2 0 0 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 1
0 0 1 1 2 0
0 0 0 0 0 0
1 0 0 0 0 1
START
0 1 0 1 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 0 0 3 0 0
0 0 1 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 1
1 0 0 1 0 0
0 0 0 0 0 0
0 3 0 0 0 0
0 0 0 0 0 0
1 0 1 0 0 1
START
0 1 0 0 0 0
1 0 0 0 0 1
0 0 0 1 0 0
0 3 0 0 0 0
0 0 1 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 0 0 0
0 0 0 0 0 1
0 0 2 3 0 0
0 0 0 0 0 0
1 0 0 0 0 1
11
여기서 하나만 뽑으면.
그냥 첫번째부터 잘못되었는데요.
이부분 다음과 같이 진행되어야 하는데요.
START
0 1 0 1 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 0 2 0 2 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 2 0 1
0 0 0 0 0 0
0 2 0 0 0 0
1 0 0 0 0 1
이렇게 진행되고 있습니다.
START
0 1 0 1 0 0
1 0 0 0 0 1
0 0 0 0 0 0
0 0 2 0 2 0
0 0 0 0 0 0
1 0 0 0 0 1
START
1 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 1
0 0 2 0 0 0
0 0 0 0 0 0
1 0 2 0 0 1
확인부탁드립니다.
디버깅코드
if (move()){
cout << cnt;
break;
}
cout << "START\n";
for (int i = 1; i <= N; i++){
for (int j = 1; j <= N; j++){
cout << M[i][j].size() << " ";
}
cout << "\n";
}
감사합니다.
0
바깥으로 나갈때, 파란색으로 경우 처리를 하라고 했으니, 조건문을 바깥으로 나간다면 이라고 처리 해주었습니다. 뒤는 else if 문을 사용해 밖으로 벗어나는 경우를 없앴습니다.
0
안녕하세요 동훈님 ㅎㅎ
코드 좀 봤는데요.
for (int i = 1; i <= N; i++){
for (int j = 1; j <= N; j++){
cin >> A[i][j];
}
}
입력을 1 부터 받아놨고 그걸기반으로 했다면...
if (my > N || my <= 0 || mx > N || mx <= 0){
이거 1 ~ N 이렇게 되어야 하는게 아닐까요?
감사합니다.
바깥으로 나갈때, 파란색으로 경우 처리를 하라고 했으니, 조건문을 바깥으로 나간다면 이라고 처리 해주었습니다. 뒤는 else if 문을 사용해 밖으로 벗어나는 경우를 없앴습니다.
https://www.acmicpc.net/source/72245823