NQUEEN 어떤 오답이 나오는지 모르겠습니다. Hexion 1부터 12까지 모든 답이 위키피디아에서 찾아본 답과 동일한데 어떤 오답이 생기는지 모르겠네요 이상하게 13만 답이 다르고 14부턴 다시 맞던데 문제가 12까지만이라 별 상관 없을거 같고.. #include <iostream> using namespace std; class queentable { public: int** table; int size; int anscnt; void putqueen(int row, int col) { if (row == 0) { for (int i = row + 1; i < size; i++) for (int j = 0; j < size; j++) if (table[i][j] == 10 + row) table[i][j] = 99; } table[row][col] = 55; if (row != size - 1) { for (int i = 0; i < size; i++) { if (row + i < size) { if (table[row + i][col + i] == 99) table[row + i][col + i] = 10 + row; if (table[row + i][col] == 99) table[row + i][col] = 10 + row; if (table[row + i][col - i] == 99) table[row + i][col - i] = 10 + row; } } findplace(row + 1); } else { this->anscnt += 1; } table[row][col] = 99; } void findplace(int row) { for (int i = 0; i < size; i++) { if (table[row][i] == 99) { putqueen(row, i); for (int i = row + 1; i < size; i++) for (int j = 0; j < size; j++) if (table[i][j] == 10 + row) table[i][j] = 99; } } } queentable(int size) { this->size = size; this->anscnt = 0; table = (int**)calloc(sizeof(*table), size); for (int i = 0; i < size; i++) table[i] = (int*)calloc(sizeof(int), size); for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { table[i][j] = 99; } } } ~queentable() { for (int i = 0; i < size; i++) free(table[i]); free(table); } int totalcal() { for (int i = 0; i < size; i++) putqueen(0, i); return anscnt; } }; int main() { int number; cin >> number; int* numbers; numbers = (int*)calloc(sizeof(int), number); for (int i = 0; i < number; i++) cin >> numbers[i]; for (int i = 0; i < number; i++) { queentable table(numbers[i]); cout << table.totalcal()<<endl; } } 9년 전
2개의 댓글이 있습니다. Being table[][]에 대한 접근이 첨자 범위를 벗어날 수 있습니다. 이와 같이 어떤 환경에서는 잘 동작하는 것 같은데 다른 환경에서 동작하지 않는 경우, 알고리즘상의 문제보다는 구현상의 실수가 문제가 되는 것이므로 참고하셔서 해결하시면 되겠습니다. 9년 전 link Hexion 아아 감사합니다 이게 대체 왜 에러가 안났던거죠... 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
Hexion
1부터 12까지 모든 답이
위키피디아에서 찾아본 답과 동일한데
어떤 오답이 생기는지 모르겠네요
이상하게 13만 답이 다르고 14부턴 다시 맞던데
문제가 12까지만이라 별 상관 없을거 같고..
9년 전