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
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
AC × 42
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