Submission #1476213
Source Code Expand
#include <stdio.h>
#include <stdlib.h>
int N = 8;
int no_answer = 0;
int success = 0;
void print_board(char **board){
int i, j;
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
printf("%c", board[i][j]);
}
printf("\n");
}
}
void draw_way(char **board, int x, int y, int dx, int dy){
if(0 <= x && x < N && 0 <= y && y <= N){
if(board[x][y] == 'Q'){
no_answer = 1;
return;
}
board[x][y] = 'T';
draw_way(board, x + dx, y + dy, dx, dy);
}
}
void draw_queen_ways(char **board, int x, int y){
draw_way(board, x - 1, y - 1, -1, -1);
draw_way(board, x - 1, y , -1, 0);
draw_way(board, x - 1, y + 1, -1, 1);
draw_way(board, x , y - 1, 0, -1);
draw_way(board, x , y + 1, 0, 1);
draw_way(board, x + 1, y - 1, 1, -1);
draw_way(board, x + 1, y , 1, 0);
draw_way(board, x + 1, y + 1, 1, 1);
}
void copy_board(char **board1, char **board2){
int i, j;
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
board2[i][j] = board1[i][j];
}
}
}
void DFS(char **board, int m){
if(m == 0){
success = 1;
return;
}
int i, j;
char **next_board = (char **)malloc(sizeof(char *) * N);
for(i = 0; i < N; i++){
next_board[i] = (char *)malloc(sizeof(char) * N);
}
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
if(board[i][j] == '.'){
copy_board(board, next_board);
next_board[i][j] = 'Q';
draw_queen_ways(next_board, i, j);
DFS(next_board, m - 1);
if(success == 1){
copy_board(next_board, board);
return;
}
}
}
}
}
int main(){
int i, j;
char c;
char **board = (char **)malloc(sizeof(char *) * N);
for(i = 0; i < N; i++){
board[i] = (char *)malloc(sizeof(char) * N);
for(j = 0; j < N; j++){
scanf("%c", &board[i][j]);
}
scanf("%c", &c);
}
// print_board(board);
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
if(board[i][j] == 'Q'){
draw_queen_ways(board, i, j);
}
}
}
// print_board(board);
if(no_answer == 1){
printf("No Answer\n");
return 0;
}
DFS(board, 5);
if(success == 1){
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
if(board[i][j] == 'Q'){
printf("Q");
}
else{
printf(".");
}
}
printf("\n");
}
}
else{
printf("No Answer\n");
}
return 0;
}
Submission Info
Submission Time
2017-08-02 00:53:03+0900
Task
C - パズルのお手伝い
User
abc050
Language
C (GCC 5.4.1)
Score
100
Code Size
2349 Byte
Status
AC
Exec Time
1 ms
Memory
384 KB
Compile Error
./Main.c: In function ‘main’:
./Main.c:82:4: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%c", &board[i][j]);
^
./Main.c:84:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%c", &c);
^
Judge Result
Set Name
All
Score / Max Score
100 / 100
Status
Set Name
Test Cases
All
00_sample1.txt, 00_sample2.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 01_rnd_30.txt, 01_rnd_31.txt, 01_rnd_32.txt, 01_rnd_33.txt, 01_rnd_34.txt, 01_rnd_35.txt, 01_rnd_36.txt, 01_rnd_37.txt, 01_rnd_38.txt, 01_rnd_39.txt
Case Name
Status
Exec Time
Memory
00_sample1.txt
AC
1 ms
128 KB
00_sample2.txt
AC
1 ms
128 KB
01_rnd_00.txt
AC
1 ms
256 KB
01_rnd_01.txt
AC
1 ms
128 KB
01_rnd_02.txt
AC
1 ms
128 KB
01_rnd_03.txt
AC
1 ms
384 KB
01_rnd_04.txt
AC
1 ms
128 KB
01_rnd_05.txt
AC
1 ms
256 KB
01_rnd_06.txt
AC
1 ms
128 KB
01_rnd_07.txt
AC
1 ms
128 KB
01_rnd_08.txt
AC
1 ms
128 KB
01_rnd_09.txt
AC
1 ms
128 KB
01_rnd_10.txt
AC
1 ms
128 KB
01_rnd_11.txt
AC
1 ms
128 KB
01_rnd_12.txt
AC
1 ms
128 KB
01_rnd_13.txt
AC
1 ms
256 KB
01_rnd_14.txt
AC
1 ms
128 KB
01_rnd_15.txt
AC
1 ms
128 KB
01_rnd_16.txt
AC
1 ms
128 KB
01_rnd_17.txt
AC
1 ms
128 KB
01_rnd_18.txt
AC
1 ms
128 KB
01_rnd_19.txt
AC
1 ms
128 KB
01_rnd_20.txt
AC
1 ms
128 KB
01_rnd_21.txt
AC
1 ms
128 KB
01_rnd_22.txt
AC
1 ms
128 KB
01_rnd_23.txt
AC
1 ms
384 KB
01_rnd_24.txt
AC
1 ms
128 KB
01_rnd_25.txt
AC
1 ms
256 KB
01_rnd_26.txt
AC
1 ms
128 KB
01_rnd_27.txt
AC
1 ms
128 KB
01_rnd_28.txt
AC
1 ms
384 KB
01_rnd_29.txt
AC
1 ms
128 KB
01_rnd_30.txt
AC
1 ms
128 KB
01_rnd_31.txt
AC
1 ms
128 KB
01_rnd_32.txt
AC
1 ms
128 KB
01_rnd_33.txt
AC
1 ms
128 KB
01_rnd_34.txt
AC
1 ms
128 KB
01_rnd_35.txt
AC
1 ms
128 KB
01_rnd_36.txt
AC
1 ms
128 KB
01_rnd_37.txt
AC
1 ms
128 KB
01_rnd_38.txt
AC
1 ms
256 KB
01_rnd_39.txt
AC
1 ms
384 KB